我在AccountController
中有以下LogOff
函数:
[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()
。
这正是应该发生的事情。第二个用户没有要注销的内容,因为他已经注销了。所以没关系。
您的问题是向用户显示自定义错误。您肯定希望显示一些自定义消息,为用户提供更多信息和更少的技术细节。
为此,您需要一些异常处理程序,并在其中处理HttpAntiForgeryException
。
它正常工作,您现在需要做的就是尝试捕获检查,然后在这种情况下将用户重定向到登录页面