gpt4 book ai didi

asp.net - 防伪 token 适用于不同的基于声明的用户

转载 作者:行者123 更新时间:2023-12-02 10:01:02 27 4
gpt4 key购买 nike

我正在使用 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”。

最佳答案

对我有用的是切换所使用的中间件的顺序。首先添加app.UseAuthentication(),然后添加防伪内容。我就是这样做的:

app.UseAuthentication();
app.Use(next => ctx =>
{
var tokens = antiforgery.GetAndStoreTokens(ctx);

ctx.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
new CookieOptions() { HttpOnly = false });

return next(ctx);
});

反之亦然会创建一个不适用于经过身份验证的用户的 token 。

关于asp.net - 防伪 token 适用于不同的基于声明的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36224300/

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