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请求到无效凭证的服务器,并让服务器接受它们。