gpt4 book ai didi

c# - 如何解决: The provided anti-forgery token was meant for a different claims-based user than the current user

转载 作者:太空狗 更新时间:2023-10-29 21:32:29 32 4
gpt4 key购买 nike

我收到这个错误:

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

而且我不确定如何纠正这个问题..

我有一个 MVC5 站点,在这个站点中我有一个登录页面。

这是它发生的场景。

  1. 用户 AAA 登录。(没有问题)
  2. 我试图访问用户无权访问的 View 。
    • 我用 Authorize(Roles="aa") 修饰类
  3. 然后 View 会注销用户并将他们返回到登录页面。
  4. 用户AAA登录。(这次报错如上)

注意事项:
我正在使用 customErrors,这是我看到错误消息的地方。

当我注销用户时,我正在运行此方法:

[HttpGet]
public void SignOut()
{
IAuthenticationManager authenticationManager = HttpContext.GetOwinContext().Authentication;
authenticationManager.SignOut(MyAuthentication.ApplicationCookie);
}

我可能在 SignOut 上遗漏了什么吗?

更新:
这只是因为上面列出的第 2 步而发生。
如果我登录,然后注销(调用相同的代码)然后重新登录,那么我就没有这个问题。

最佳答案

我认为您忽略了发布一些相关代码。您的 Signout 操作返回 void。如果您直接在浏览器中访问此操作,则用户在注销后将看到一个空白页面,无法继续前进。因此,我只能假设您要么通过 AJAX 调用它,要么作为另一个操作的方法进行调用。

防伪在 MVC 中的工作方式是在用户机器上设置一个包含唯一生成 token 的 cookie。如果用户已登录,他们的用户名将用于组成该 token 。为了在没有设置用户名的情况下获得新的 cookie,用户必须注销并且必须出现新的请求来设置新的 cookie。如果您只是将用户注销而没有进行重定向或其他操作,则新的无用户 cookie 将尚未设置。然后,当用户发帖时,旧的基于用户的 cookie 会被发回,同时 MVC 正在寻找新的无用户 cookie,然后砰的一声:你的异常出现了。

就像我说的,您没有发布足够的代码来确定发生这种情况的确切原因或位置,但简单地说,确保在注销用户后发出新请求,以便可以设置新的 cookie。

关于c# - 如何解决: The provided anti-forgery token was meant for a different claims-based user than the current user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41445760/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com