1. ホーム
  2. asp.net

[解決済み] 偽造防止用トークンは、別のクレームベースのユーザーのためのものだった

2022-02-14 01:01:16

質問事項

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(); 
        }

ユーザーがログアウトボタンを押した後、ログイン画面に移動します。URLはまだ"と表示されています。 http://localhost:8544/Login/Logout となります。ログイン画面なのだから、quot.と表示すればいいのでは? http://localhost:8544/Login となります。

解決方法は?

これを試してみてください。

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

これでログインページが再読み込みされ、新しいCSRFトークンが提供されます。