Das angegebene Anti-Fälschungs-Token war für den Benutzer "" gedacht, aber der aktuelle Benutzer ist "xxxx".
Ich habe jede einzelne mögliche Lösung verfolgt, um diesen Fehler ohne Erfolg zu beseitigen:
Hier ist das Szenario: Ich habe 2 separate Login-Tabs, die in meinem Browser Tab A Tab B geöffnet sind: 1. Ich logge mich in Tab A in meine Site ein 2. Versuchen Sie dann, sich in Tab B
einzuloggenDer obige Fehler tritt dann auf
Meine C # -Web MVC-Anmeldeansicht hat:
%Vor%Und mein Controller wie folgt:
%Vor%Wie kann ich diesen Fehler beheben?
Dies passiert, weil die beiden Browser-Registerkarten denselben Cookie-Speicher verwenden. Das Authentifizieren mit der ersten Registerkarte setzt ein neues Cookie, das Ihren Benutzernamen identifiziert. Wenn die zweite Registerkarte übergeben wird, übergibt sie das aktualisierte Cookie, das von der erfolgreichen Authentifizierung auf der ersten Registerkarte abgerufen wurde, zusammen mit dem ausgeblendeten Formularfeld, das vor der Authentifizierung geladen wurde und Sie als anonymen Benutzer identifiziert. Da die Benutzernamen im Cookie und im ausgeblendeten Formularfeld nicht mit der Validierung übereinstimmen, schlägt der Vorgang fehl.
Der AntiForgerryWorker, den ValidateAntiForgeryTokenAttribute verwendet, verschlüsselt den authentifizierten Benutzernamen sowohl in das Cookie- als auch in das verborgene Formularfeld und stellt sicher, dass beide bei der Validierung übereinstimmen. Wenn Sie sich authentifizieren oder Benutzer ändern, schlägt diese Validierung fehl, wenn Sie mit ValidateAntiForgeryTokenAttribute auf eine Aktion posten.
Dies bedeutet leider, dass Ihre Optionen darauf beschränkt sind, die Anmeldeaktion nicht mit ValidateAntiForgeryTokenAttribute zu schützen, das beschriebene Szenario zu ignorieren und die Validierung fehlschlagen zu lassen oder die Implementierung von AntiForgery in MVC so zu implementieren, dass der Benutzername nicht in die Validierung einbezogen wird.
Tags und Links asp.net-mvc c#