我正在使用ASP.NET Identity登录的应用程序中的注销功能。我可以成功登录,但是当我注销然后再次尝试登录时,收到以下消息:

The provided anti-forgery token was meant for a different claims-based user than the current user.

这是我的注销代码:
 public ActionResult Logout()
        {
            SignInManager.Logout();
            return View("Index");
        }

**SignInManager.cs**
 public void Logout()
        {
            AuthenticationManager.SignOut();
        }

用户按下注销按钮后,将进入登录屏幕。网址仍显示“http://localhost:8544/Login/Logout”。由于我们在登录屏幕上,因此也许应该只说“http://localhost:8544/Login”。

最佳答案

尝试这个:

public ActionResult Logout()
{
    AuthenticationManager.SignOut();
    Session.Abandon();
    return RedirectToAction("Index");
}

这将重新加载您的登录页面,这将为您提供一个新的CSRF token 。

关于asp.net - 反伪造 token 是针对其他基于声明的用户的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36224300/

10-12 14:54