我正在使用ASP的应用程序中开发注销功能.NET身份登录.我可以成功登录,但当我注销并再次try 登录时,我会收到以下消息:

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令牌.

Asp.net相关问答推荐

AJAX返回未定义、失败

为什么 Web 架构应该是松耦合的?

.NET 站点如何隐藏其文件的 .aspx 扩展名?

未知的网络方法.参数名称:methodName

返回 JSON 对象 (ASP.NET WebAPI)

将命令行参数传递给 ASP.NET Core 中的 Startup 类

无法从 App_code 文件夹中找到类型或命名空间

ASP.NET IIS - 请求何时排队?

无法加载文件或程序集'System.Web.WebPages.Razor,版本 = 3.0.0.0

.NET 核心 IdentityUser 模型中规范化邮箱和用户名的用途是什么?

忽略默认文档的表单身份验证

如何在 Visual Studio 2017 中使用 NPM 并安装包?

ASP.NET URL 重写

aspx 文件中的 if 语句

HttpContext.Current.Cache.Insert 和 HttpContext.Current.Cache.Add 有什么区别

如何在asp.net中获取应用程序路径?

将 Http 请求读入字节数组

如何从后面的 ASP.NET 代码访问 HTML 表单输入

ContentResult 与字符串

.Net 上是否有 URL 验证器?