2010-10-17 9 views
11

Jestem w stanie wyświetlić SPRING_SECURITY_LAST_EXCEPTION.message ("Złe poświadczenia"), gdy użytkownik próbuje zalogować się przy użyciu nieprawidłowych poświadczeń.Spring Security: Jak zresetować SPRING_SECURITY_LAST_EXCEPTION.message?

mój login JSP aktualnie wykorzystuje następujący kod:

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

Moim problemem jest to, że „Bad Poświadczenia” wiadomość jest nadal istnieje, gdy użytkownik opuści stronę logowania, a następnie wraca.

Jak mogę zresetować SPRING_SECURITY_LAST_EXCEPTION.message, gdy użytkownik odświeży stronę logowania?

Odpowiedz

15

Typowe podejście polega na wyświetlaniu komunikatu o błędzie tylko po nieudanym logowaniu, w którym nieudane logowanie jest określane przez parametr żądania. Oznacza to, że można skonfigurować Wiosna Bezpieczeństwo jako

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

i pokazać komunikat o błędzie, jak

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

Jednak od SPRING_SECURITY_LAST_EXCEPTION jest atrybutem sesja, myślę, można je zresetować przy użyciu następującej metody:

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

Wielkie dzięki. Oba sugestie działały. Drugi zadziałał, gdy wstawiłem do c: if, po c: out. – outis