2010-10-17 20 views
11

Ich kann die SPRING_SECURITY_LAST_EXCEPTION.message ("Bad Credentials") anzeigen, wenn ein Benutzer versucht, mit falschen Anmeldeinformationen einzuloggen.Spring Security: Wie setze ich SPRING_SECURITY_LAST_EXCEPTION.message zurück?

Meine Login jsp nutzt derzeit den folgenden Code:

<c:if test="${not empty SPRING_SECURITY_LAST_EXCEPTION.message}"> 
    <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" /> 
</c:if> 

Mein Problem ist, dass das „Bad Credentials“ Nachricht ist immer noch da, wenn der Benutzer von der Login-Seite navigiert und kommt dann zurück.

Wie kann ich SPRING_SECURITY_LAST_EXCEPTION.message zurücksetzen, wenn ein Benutzer die Anmeldeseite aktualisiert?

Antwort

15

Der typische Ansatz besteht darin, eine Fehlermeldung nur nach fehlgeschlagener Anmeldung anzuzeigen, wobei die fehlgeschlagene Anmeldung durch den Anforderungsparameter bestimmt wird. Das heißt, konfigurieren Sie Spring Security als

<form-login ... authentication-failure-url = "/login?error=1" /> 

und zeigen Fehlermeldung als

<c:if test="${not empty param['error']}"> 
    <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" /> 
</c:if> 

Da jedoch SPRING_SECURITY_LAST_EXCEPTION ein Sitzungsattribut ist, ich denke, Sie zurücksetzen kann es den folgenden Ansatz:

<c:remove var = "SPRING_SECURITY_LAST_EXCEPTION" scope = "session" /> 
+0

Vielen Dank. Beide Vorschläge haben funktioniert. Der zweite funktionierte, als ich das in das c: if, nach dem c: out einfügte. – outis