MVC5 AntiForgeryToken - how to handle "Den mitgelieferten anti-forgery token gemeint war, für den Benutzer "", aber der aktuelle Benutzer ist "xxx"." Ausnahme?

Möchte ich zum Schutz unserer login Aktionen von AntiforgeryToken - Attribut - ich weiß, warum die Ausnahme von der Thema kommt, aber ich kann nicht scheinen zu finden, eine gute Lösung für Sie.

Lassen Sie uns sagen, wir haben den folgenden Situationen:

  1. Es ist 8:00 UHR die Benutzer der Anwendung sind, zur Arbeit zu kommen, Sie sitzen, und starten Sie den login-Prozess - jetzt ist es sehr möglich, dass einige Benutzer erhalten die gleichen ValidationToken. Nach der ersten anmeldet - alle anderen sehen die oben genannten Ausnahme (oder einige andere benutzerdefinierte Ausnahme Bildschirm), wenn Sie versuchen, sich anzumelden.

  2. Einige user angemeldet haben, dann versehentlich gedrückt die "zurück" - Taste, und versuchte, wieder anmelden - das ist zwar eher unwahrscheinlich, kann es passieren, und ich don ' T möchten, dass Benutzer finden Sie unter Ausnahmen, wenn es funktioniert.

Also die Frage ist einfach - , wie um zu verhindern, dass die genannten Situationen, oder wie mit Ihnen umzugehen ist, so dass die Benutzer nicht merken, dass etwas. Ich habe versucht, die folgenden:

  1. Einstellung der AntiForgeryConfig.SuppressIdentityHeuristicChecks = true; in Application_Start in der Global.asax - es nicht das problem zu beheben, ich bekomme immer noch die gleiche exception
  2. Einstellung der [OutputCache(NoStore = true, Dauer = 0, VaryByParam = "None")] auf die Methode mit [ValidateAntiForgeryToken] - Attribut - wieder, kein Glück gibt es

Jetzt dachte ich manuell validiert das token in Aktion Körper, fangen Sie den Fehler, und überprüfen Sie, ob versucht wurde, durch " anonymer Benutzer:

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

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

Oben scheint zu verhindern, dass der Fehler - aber ist es sicher? Welche alternativen gibt es?

Vielen Dank im Voraus.

Beste Grüße.

EDIT:

Die endgültige "Lösung" war zu deaktivieren token-Validierung auf der login-Formular - kann es einen besseren Weg, es zu handhaben, aber es scheint, dass alle Lösungen, die ich fand, waren hässliche workarounds wie bei mir oben vorgeschlagen.

Da es keine Möglichkeit gibt zu wissen, wie "sicher" diese alternativen sind (wenn Sie sicher sind, an alle), haben wir beschlossen, zu tun, deaktivieren Sie die token-Validierung auf login.

  • Sie können Skripts verwenden, zu deaktivieren, doppelte Einsendungen, stackoverflow.com/questions/2830542/...
  • Hi, ich habe das gleiche Problem, wenn Nutzer die Schaltfläche "zurück" im browser. Was hast du mit?
  • Finden Sie in der Sektion BEARBEITEN meine Frage, da nur das login-Formular hat uns dieses problem, in dem Ende, wir haben nur deaktiviert die token-Validierung. Wir beschlossen, dass es einfach nicht der Mühe Wert, und ehrlich gesagt, konnte ich nicht finden keine 'saubere' Lösung - nur hässliche workarounds (wie die, die ich gepostet mit der try-catch).
InformationsquelleAutor user2384366 | 2015-09-18
Schreibe einen Kommentar