2010-10-17 5 views
11

Je suis capable d'afficher le SPRING_SECURITY_LAST_EXCEPTION.message ("Bad Credentials") lorsqu'un utilisateur essaie de se connecter avec des informations d'identification incorrectes.Spring Security: Comment réinitialiser SPRING_SECURITY_LAST_EXCEPTION.message?

Mon connexion jsp utilise actuellement le code suivant:

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

Mon problème est que les « Bad credentials » message est toujours là lorsque l'utilisateur quitte la page de connexion, puis revient. Comment puis-je réinitialiser SPRING_SECURITY_LAST_EXCEPTION.message lorsqu'un utilisateur actualise la page de connexion?

Comment réinitialiser SPRING_SECURITY_LAST_EXCEPTION.message lorsqu'un utilisateur actualise la page de connexion?

Répondre

15

L'approche typique consiste à afficher un message d'erreur uniquement après l'échec de la connexion, où la connexion échouée est déterminée par le paramètre de demande. Autrement dit, vous configurez Spring Security comme

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

et affichera un message d'erreur

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

Cependant, étant donné SPRING_SECURITY_LAST_EXCEPTION est un attribut de session, je suppose que vous pouvez le réinitialiser en utilisant l'approche suivante:

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

Merci beaucoup. Les deux suggestions ont fonctionné. Le second a fonctionné quand j'ai mis le dans le c: if, après le c: out. – outis