Das Sitzungstimeout führt bei der CSRF-Integration mit Spring Security zu Access Length in Spring MVC

8

Ich habe ein CSRF-Token mit Spring Security in meinem Spring MVC-Projekt integriert. Alles funktioniert ordnungsgemäß mit CSRF-Token, Token wird von Client-Seite an Server-Seite gesendet.

Ich habe meinen logout -Prozess geändert, um POST -Methode zum Senden des CSRF-Tokens zu machen, und es funktioniert einwandfrei.

Ich habe ein Gesichtsproblem, wenn Sitzungs-Timeout aufgetreten ist, es muss zu Spring-Standard-Logout-URL umgeleitet werden, aber es gibt mir Access Denied für diese URL.

Wie kann dieses Verhalten überschrieben werden?

Ich habe unterhalb der Zeile in der Sicherheitskonfigurationsdatei

%Vor%

Bitte lassen Sie mich wissen, wenn jemand mehr Informationen benötigt.

    
Yagnesh Agola 26.12.2014, 07:33
quelle

2 Antworten

12

Die Frage ist ein bisschen alt, aber Antworten sind immer nützlich.

Erstens ist dies ein bekanntes Problem mit CSRF-Tokens, die von Sitzungen unterstützt werden, wie in den Dokumenten beschrieben: CSRF-Vorbehalte - Timeouts .

Um das Problem zu lösen, verwenden Sie Javascript, um bevorstehende Timeouts zu erkennen, verwenden Sie ein sitzungsunabhängiges CSRF-Token-Repository oder erstellen Sie eine benutzerdefinierte AccessDeniedHandler -Route. Ich habe letzteres gewählt:

Konfigurations-XML:

%Vor%

MyAccessDeniedHandler:

%Vor%

Alternativ können Sie den benutzerdefinierten Handler als DelegatingAccessDeniedHandler definieren:

%Vor%     
mdrg 20.02.2015, 18:17
quelle
0

Die Antwort, die von mdrg zur Verfügung gestellt wird, ist richtig, und ich habe auch eine benutzerdefinierte AccessDeniedHandler implementiert, die ich für Ihre Überlegung einreiche:

%Vor%

Mit java config verdrahtet:

%Vor%     
Brice Roncace 20.11.2017 19:09
quelle