Ich mache ein einfaches Authentifizierungssystem mit Playframework mit ihrem integrierten CSRF-Filter und dem Security.Authenticator-System, aber ich stehe vor einem Problem:
Wenn der Benutzer sein Login / Passwort eingibt und Enter eingibt, habe ich folgenden Fehler:
CSRF-Token wurde in Sitzung nicht gefunden
Ich habe mein Formular überprüft und das CSRF-Token ist wirklich vorhanden und korrekt platziert (innerhalb des Tags)
Hier ist mein routes
:
Und meine Authentication.java
-Klasse:
Die Eigenschaften, die ich in der application.conf eingestellt habe:
%Vor%Hier ist mein Formular (um zu zeigen, dass das Token korrekt positioniert ist):
%Vor% Update 1 : Ich habe alle @addCSRFToken
und @requireCSRFToken
entfernt und stattdessen ein globales CSRF-Token pro @rhj-Empfehlung definiert. Jetzt habe ich stattdessen diesen Fehler:
Es wurde ein ungültiges Token im Formularhauptteil gefunden
Aber wie Sie im HTML-Formular sehen können, wird das Token innerhalb des Formulars platziert und sollte identifiziert werden!
Update 2 : Was mich am meisten stört, ist, dass dieses Problem nur auf der Anmeldeseite auftritt und nicht anderswo! Gibt es eine Sitzung zuerst zu aktivieren? Ich denke nicht, aber vielleicht?!
Update 3 : Noch seltsamer, ich habe gerade herausgefunden, dass es funktioniert, wenn ich den Wert von csrf.token.name
ändere und die Seite neu lade. Wenn ich mich abmelde, eine neue Seite öffne und versuche, erneut zu loggen, scheitert es mit der Nachricht Invalid token found in form body
. Wenn ich den Wert von csrf.token.name
erneut ändere und es erneut tue, wird es wieder funktionieren.
Update 4 : Ich habe das Problem eingegrenzt. Ich benutze auch den play.mvc.Security.Authenticator und es scheint, dass die Token-Verifizierung NUR fehlschlägt, wenn ich die Seite nach einem redirect()
zeige. Wenn ich direkt zur Anmeldeseite gehe, wird die Fehlermeldung nicht angezeigt.
Endgültiges Update! : Ich habe das Problem endlich gefunden, es war in einer anderen Klasse, die ich nicht ahnte, die aufgerufen und die Sitzung gelöscht wurde, wodurch das Token nutzlos wurde!
Tags und Links playframework playframework-2.3 csrf