如果用户使用基本身份验证,是否可以从网站注销用户?
杀戮会话是不够的,因为一旦用户通过身份验证,每个请求都包含登录信息,因此用户下次使用相同的凭据访问站点时会自动登录.
到目前为止,唯一的解决方案是关闭浏览器,但从可用性的角度来看,这是不可接受的.
存储HTTP基本身份验证凭据直到浏览器关闭,但有没有办法在浏览器关闭之前删除凭据?
我读了一个关于HTTP 401状态代码的技巧,但似乎工作不正常(请参阅评论回答).也许trac使用的机制就是解决方案.
可以使用JavaScript删除凭据吗?或者结合使用JavaScript和状态401技巧?
如何在ASP.NET中使用Windows身份验证时注销,如此web.config?
<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下尝试失败了.它重定向,但不会注销用户.
void logoutButton_Click(object sender, EventArgs e) {
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
ViewState.Clear();
FormsAuthentication.SignOut();
Response.Redirect("/");
}
Run Code Online (Sandbox Code Playgroud)
背景资料:
我必须使用Windows身份验证,因为我需要使用Active Directory模拟身份以获取对本地文件的访问权限.而且我无法模仿使用Forms身份验证,因为它HttpContext.Current.User.Identity不会是一个WindowsIdentity.
使用表单身份验证进行模拟
我这里有一些内部的.net Web应用程序,要求用户"注销"它们.我知道这在Intranet应用程序上似乎没什么问题,但它仍然存在.
我们对Intranet应用程序使用Windows身份验证,因此我们使用基本身份验证绑定到Active Directory,并且凭据存储在浏览器缓存中,而不是使用.net表单身份验证时的cookie.
在IE6 +中,您可以通过执行以下操作来利用他们创建的特殊JavaScript函数:
document.execCommand("ClearAuthenticationCache", "false")
Run Code Online (Sandbox Code Playgroud)
但是,对于其他需要支持的浏览器(即目前的Firefox,但我力求支持多浏览器),我只是向用户显示他们需要关闭浏览器以退出应用程序的消息,有效地刷新应用程序缓存.
有人知道一些命令/黑客/等.我可以在其他浏览器中使用来刷新身份验证缓存?