我在LogOff
中有以下AccountController
功能:
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
Session.Remove("UserName");
Session.Remove("UserRoleId");
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignOut();
Session.Abandon();
Session.Clear();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
return RedirectToAction("Login", "Account");
}
现在假设我打开了两个浏览器标签。如果我从第一页注销,它工作正常。现在成功注销后,如果我再次单击第二个窗口中的注销按钮,它会显示错误: “提供的防伪令牌适用于与当前用户不同的基于声明的用户。”
我知道许多用户已经问过这个问题,但是那些答案 没有解决我的问题。我也在这里使用了
Session.Abandon()
。
答案 0 :(得分:3)
这正是应该发生的事情。第二个用户没有注销,因为他已经注销了。这很好。
您的问题是自定义向用户显示的错误。您肯定希望显示一些自定义消息,为用户提供更多信息和更少的技术细节。
为了做到这一点,你需要一些异常处理程序,并在其中处理HttpAntiForgeryException
。
答案 1 :(得分:1)
它正常工作,因为你现在需要做的就是尝试捕获检查,然后在这种情况下将用户重定向到登录页面