2010-10-17 12 views
11

Sono in grado di visualizzare lo SPRING_SECURITY_LAST_EXCEPTION.message ("Bad Credentials") quando un utente tenta di accedere con credenziali errate.Spring Security: come posso resettare SPRING_SECURITY_LAST_EXCEPTION.message?

mio jsp login attualmente utilizza il seguente codice:

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

Il mio problema è che le "Bad credenziali" messaggio è ancora lì quando l'utente si sposta dalla pagina di login e poi torna.

Come posso ripristinare SPRING_SECURITY_LAST_EXCEPTION.message quando un utente aggiorna la pagina di accesso?

risposta

15

L'approccio tipico è quello di visualizzare il messaggio di errore solo dopo l'accesso non riuscito, in cui l'accesso non riuscito è determinato dal parametro di richiesta. Cioè, si configura Primavera di sicurezza come

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

e mostrare il messaggio di errore come

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

Tuttavia, dal momento che SPRING_SECURITY_LAST_EXCEPTION è un attributo di sessione, Credo che si può ripristinare utilizzando il seguente approccio:

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

Grazie mille. Entrambi i suggerimenti hanno funzionato. Il secondo ha funzionato quando ho inserito all'interno di c: if, after the c: out. – outis