ASP.NET Windows身份validation注销
如何在ASP.NET中使用Windows身份validation(如此web.config)时注销?
<authentication mode="Windows" />
我已经尝试了以下失败。 它redirect,但不会注销用户。
void logoutButton_Click(object sender, EventArgs e) { HttpContext.Current.Session.Clear(); HttpContext.Current.Session.Abandon(); ViewState.Clear(); FormsAuthentication.SignOut(); Response.Redirect("/"); }
背景信息:
我必须使用Windows身份validation,因为我需要使用Active Directory来模拟身份以访问本地文件。 而且我不能模拟使用Forms身份validation,因为HttpContext.Current.User.Identity
不会是WindowsIdentity
。 使用表单身份validation模拟
使用“Windows”身份validation时,服务器端注销button无法使用。 如果您需要注销button或closures用户的浏览器,则必须使用“表单”身份validation。
仅适用于IE浏览器 ,如果使用Windows身份validation,则可以使用以下JavaScript注销用户。 (注意:closures浏览器不是必需的,但build议用户可能使用的是非IE浏览器)。
如果用户点击“否”closures浏览器,那么如果用户尝试访问需要authentication的网站上的网页,则会提示用户input用户名/密码。
try { document.execCommand("ClearAuthenticationCache"); } catch (e) { } window.close();
此代码是从SharePoint的Signout.aspx页面中获取的。
Windows身份validation通过传递您的Windows身份validation令牌在IIS级别上工作。 由于身份validation发生在IIS级别,因此您无法从应用程序代码实际注销。 但是,这里似乎有一个解决您的问题的答案。 这是解决的第二个问题,主要涉及使用窗体身份validation和LogonUser Windows API。
我有一个SharePoint应用程序与Windows身份validation,我需要15分钟后自动注销。 我混合了一些代码,这是结果。 它在IE中正常工作。
<script type="text/javascript"> var t; window.onload = resetTimer; document.onmousemove = resetTimer; document.onkeypress = resetTimer; function logout() { try { document.execCommand("ClearAuthenticationCache"); window.location.href = window.location.protocol.replace(/\:/g, '') + "://" + window.location.host + "/_layouts/customlogin14.aspx"; } catch (e) { } } function resetTimer() { window.clearTimeout(t); t = window.setTimeout(logout, 900000); }
把这些代码放在您的母版页中,空闲15分钟后您将看到login页面。 希望这有助于某人
我在IE和Firefox中都使用JavaScript,尽pipe它在IE中logging了所有的东西。 它在Safari中的作品,但Safari浏览器抛出一个networking钓鱼警告。 在Opera中不起作用。
尝试{ 如果(document.all) { document.execCommand( “ClearAuthenticationCache”); window.location =“/”; } 其他 { window.location =“http://注销:logout@example.com”; } } 赶上(E) { 警报(“无法从浏览器caching中清除您的凭据,请closures浏览器窗口以确保您完全注销系统。 self.close(); }
我见过的最好的答案在相关的StackOverFlow问题中find:
有一个浏览器相当于IE的ClearAuthenticationCache?
和
在使用HTTP基本身份validation时logging用户
基本上你需要发送一个AJAX请求到无效凭证的服务器,并让服务器接受它们。