Spring Security: как мне сбросить SPRING_SECURITY_LAST_EXCEPTION.message? - PullRequest
12 голосов
/ 17 октября 2010

Я могу отобразить 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 припользователь обновляет страницу входа?

1 Ответ

16 голосов
/ 17 октября 2010

Типичный подход - отображать сообщение об ошибке только после неудачного входа в систему, где неудачный вход в систему определяется параметром запроса.То есть вы настраиваете 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...