FormsAuthentication.SignOut(),据我所知,它只会杀死浏览器中的cookie。即如果要保存cookie并且在FormsAuthentication.SignOut()再次使用之后,则对用户进行身份验证。如何杀死服务器上的会话?即使任何cookie无效?
我有ASP.NET MVC。
HttpContext.Session.Abandon()不起作用。
答案 0 :(得分:2)
通过使用默认表单身份验证机制,您无法实现此目的。 cookie将在给定的时间段内有效,如果黑客获取此cookie,无论您做什么,在这段时间内他都可以进入该站点。实现此目的的唯一方法是通过将令牌存储到数据库中并在FormsAuthentication.SignOut()
上使它们到期来手动处理它,以便它们不能被重用。
所以我的建议:
答案 1 :(得分:1)
你没有。好吧,你可以更改机器密钥,但这需要弹出服务器并使每个人的 cookie无效。
您要问的是Forms身份验证无法提供的内容。表单身份验证不存储有效cookie的持久列表。您必须编写或查找自定义提供程序(或自定义表单)才能执行此操作。
答案 2 :(得分:0)
这对我有用
public virtual ActionResult LogOff()
{
FormsAuthentication.SignOut();
foreach (var cookie in Request.Cookies.AllKeys)
{
Request.Cookies.Remove(cookie);
}
foreach (var cookie in Response.Cookies.AllKeys)
{
Response.Cookies.Remove(cookie);
}
return RedirectToAction(MVC.Home.Index());
}