MVC5 AntiForgeryToken - comment gérer “La lutte contre la falsification de jeton a été conçu pour l'utilisateur ”“, mais l'utilisateur actuel est ”xxx“.” l'exception"?

Je veux protéger notre connexion actions par AntiforgeryToken attribut - je sais pourquoi l'exception de la rubrique se produit, cependant je n'arrive pas à trouver une bonne solution pour elle.

Disons que nous avons l'une des situations suivantes:

  1. Il est 8:00 du matin, les utilisateurs de l'application sont à venir au travail, ils s'asseoir et de commencer le processus de connexion - pour l'instant il est très possible que certains utilisateurs auront la même ValidationToken. Après la première journaux dans toutes les autres verront l'exception ci-dessus (ou une autre exception personnalisée de l'écran) lors de leur tentative de connexion.
  2. De l'utilisateur connecté, puis appuyez accidentellement sur la "retour" et tenté de vous connecter à nouveau - ce qui est plus rare, il peut arriver, et je ne veux pas que les utilisateurs voient des exceptions quand il ne.

La question est donc simple - comment prévenir les situations ci-dessus, ou comment les gérer de sorte que les utilisateurs ne remarqueront rien. J'ai essayé ce qui suit:

  1. Réglage de la AntiForgeryConfig.SuppressIdentityHeuristicChecks = true; dans Application_Start Mondiale.asax - il n'a pas de résoudre le problème, j'obtiens toujours la même exception
  2. Réglage de la [OutputCache(NoStore = true, Durée = 0, VaryByParam = "None")] sur la méthode avec [ValidateAntiForgeryToken] attribut - encore une fois, pas de chance, il y

Droit maintenant, je pensais à manuellement valider le jeton dans l'action du corps, de capture de l'erreur, et de vérifier si la tentative a été faite par utilisateur anonyme:

public ActionResult SomeAction()
{
    try
    {
        AntiForgery.Validate();
    }
    catch(HttpAntiForgeryException ex)
    {
        if(String.IsNullOrEmpty(HttpContext.User.Identity.Name))
        {
            throw;
        }
    }

    //Rest of action body here
    //..
    //..
}

Ci-dessus semble éviter les erreurs - mais est-il sûr? Quelles sont les alternatives?

Merci d'avance.

Meilleures salutations.

EDIT:

La dernière "solution" est de désactiver jeton de validation sur le formulaire de connexion: il y a peut-être une meilleure façon de le gérer, mais il semble que toutes les solutions que j'ai trouvées, étaient laids solutions similaires à la mienne proposé ci-dessus.

Car il n'y a aucun moyen de savoir combien de "coffre-fort", ces alternatives sont (si ils sont en sécurité en tout), nous avons décidé de faire désactiver jeton de validation lors de la connexion.

Vous pouvez utiliser des scripts pour désactiver le double présentations, stackoverflow.com/questions/2830542/...
Salut, je vais avoir le même problème lorsque l'utilisateur appuie sur bouton retour du navigateur. Qu'avez-vous de la fin?
Voir la section EDIT de ma question - puisque seul le formulaire de connexion nous a donné ce problème, en fin de compte, nous avons juste désactivé le jeton de validation. Nous avons décidé qu'il n'était tout simplement pas en vaut la peine et franchement, je ne pouvais pas trouver tout "propre" solution - seuls les moches, les solutions de contournement (comme celle, que j'ai posté avec le try-catch).

OriginalL'auteur user2384366 | 2015-09-18