2010-10-17 19 views
11

Puedo mostrar el SPRING_SECURITY_LAST_EXCEPTION.message ("Bad Credentials") cuando un usuario intenta iniciar sesión con credenciales incorrectas.Seguridad de primavera: ¿cómo restablezco SPRING_SECURITY_LAST_EXCEPTION.message?

Mi JSP entrada actualmente utiliza el siguiente código:

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

Mi problema es que las credenciales "malos" mensaje sigue siendo allí cuando el usuario se desplaza fuera de la página de inicio de sesión y luego regresa.

¿Cómo puedo restablecer SPRING_SECURITY_LAST_EXCEPTION.message cuando un usuario actualiza la página de inicio de sesión?

Respuesta

15

El enfoque típico es mostrar el mensaje de error solo después del inicio de sesión fallido, donde el inicio de sesión fallido se determina por el parámetro de solicitud. Es decir, se configura la primavera de Seguridad como

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

y mostrar el mensaje de error como

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

Sin embargo, desde SPRING_SECURITY_LAST_EXCEPTION es un atributo de sesión, supongo que se puede restablecer utilizando el siguiente enfoque:

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

Muchas gracias. Ambas sugerencias funcionaron. El segundo funcionó cuando puse el dentro de c: si, después de c: out. – outis

Cuestiones relacionadas