Anti-Forgery Token était destiné à un utilisateur différent basé sur les revendications
Je suis en train de travailler sur une déconnexion fonctionnalité dans l'application que nous utilisons ASP.NET connexion d'Identité. Je peux me connecter avec succès mais quand je déconnexion et puis essayez de vous connecter à nouveau je reçois le message suivant:
The provided anti-forgery token was meant for a different claims-based user than the current user.
Voici ma déconnexion code:
public ActionResult Logout()
{
SignInManager.Logout();
return View("Index");
}
**SignInManager.cs**
public void Logout()
{
AuthenticationManager.SignOut();
}
Après que l'utilisateur presse le bouton de déconnexion, il est pris à l'écran de connexion. L'url indique toujours "http://localhost:8544/Login/Logout". Puisque nous sommes sur l'écran de connexion peut-être qu'il devrait se contenter de dire "http://localhost:8544/Login".
source d'informationauteur john doe
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Qui permettra de recharger votre page de connexion qui sera de vous fournir un nouveau jeton CSRF.
Vous retournez un
View
plutôt que d'appelerRedirectToAction()
. Donc ce qui arrive est la vue s'exécute sous le contexte de la requête de fermeture de session, où l'utilisateur est toujours connecté. Ils ne seront pas enregistrées jusqu'à ce que la demande de finitions.Donc, essayez de
Ce qui a fonctionné pour moi a été de commutation de l'ordre des middlewares utilisé. Ajouter d'abord
app.UseAuthentication()
et puis le antiforgery choses. Voilà comment j'ai fait:Faire de l'autre manière autour de crée un jeton qui n'est pas destiné à des utilisateurs authentifiés.
J'ai reçu ce même message d'erreur sur la connexion pour un LONG moment maintenant, mais je n'ai pas été en mesure de déterminer pourquoi. Enfin je l'ai trouvé, je vais le poster ici (même si c'est un peu une autre cause) dans le cas où quelqu'un d'autre l'a.
C'était mon code:
Cela a bien fonctionné pour 99,99% des connexions, mais chaque maintenant & puis j'ai eu l'erreur ci-dessus, bien que je ne pouvais pas reproduire, jusqu'à maintenant.
L'erreur ne se produit que lorsque quelqu'un clique sur le bouton de connexion deux fois en succession rapide. Cependant, si je retire la
AuthenticationManager.SignOut
ligne dans leLogin
action, alors c'est la fin. Je ne sais pas pourquoi j'ai mis cette ligne là, mais il est à l'origine du problème et de le retirer résout le problème.