2010-10-17 2 views
11

Я могу показать SPRING_SECURITY_LAST_EXCEPTION.message («Плохие учетные данные»), когда пользователь пытается выполнить вход с неправильными учетными данными.Spring Security: Как сбросить SPRING_SECURITY_LAST_EXCEPTION.message?

Мой Войти JSP в настоящее время использует следующий код:

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

Моя проблема заключается в том, что «Bad Credentials» сообщение все еще там, когда пользователь переходит от страницы входа в систему, а затем возвращается.

Как сбросить SPRING_SECURITY_LAST_EXCEPTION.message, когда пользователь обновит страницу входа?

ответ

15

Типичный подход заключается в отображении сообщения об ошибке только после неудачного входа в систему, где неудачный вход в систему определяется параметром запроса. То есть, необходимо настроить Spring Security в

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

и показать сообщение об ошибке, как

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

Однако, поскольку SPRING_SECURITY_LAST_EXCEPTION является атрибутом сеанса, я думаю, вы можете сбросить его, используя следующий подход:

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

Большое спасибо. Оба предложения работали. Вторая работала, когда я положил внутри c: if, после c: out. – outis

Смежные вопросы