我正在使用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相关问答推荐

是否可以发布 ASP.NET 5 应用程序以使目标机器不需要安装 DNX?

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

使 ASP.NET WCF 将字典转换为 JSON,省略键和值标签

业务逻辑中的实体框架最佳实践?

是否可以使用 Membership API 更改用户名

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

什么相当于 ASP.NET 中的 cron 作业(job)?

Jquery asp.net 按钮单击事件通过 ajax

ASP.NET URL 重写

在使用网络服务器加载它们之前,如何编译 Asp.Net Aspx 页面?

GridView 与嵌套类的属性绑定

温莎城堡有什么缺点吗?

嵌套剃刀模板中的@RenderSection

缩小 ASP.NET 应用程序的 Html 输出

WebForm_PostBackOptions 文档

MVC3 值 Ajax 文件上传

如何获取程序集的最后修改日期?

覆盖静态方法

在 Asp.Net MVC 5 中获取登录用户的用户 ID

在 ASP.NET 中写入文件以响应后回发不起作用