Spring Безопасность: Как сделать reset SPRING_SECURITY_LAST_EXCEPTION.message?
Я могу отобразить SPRING_SECURITY_LAST_EXCEPTION.message
( "Bad Credentials" ), когда пользователь пытается выполнить вход с неправильными учетными данными.
Мой логин jsp в настоящее время использует следующий код:
<c:if test="${not empty SPRING_SECURITY_LAST_EXCEPTION.message}">
<c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" />
</c:if>
Моя проблема в том, что сообщение "Плохие учетные данные" все еще существует, когда пользователь переходит от страницы входа в систему и затем возвращается.
Как я могу reset SPRING_SECURITY_LAST_EXCEPTION.message
, когда пользователь обновляет страницу входа?
Ответы
Ответ 1
Типичный подход заключается в отображении сообщения об ошибке только после неудачного входа в систему, где неудачный вход в систему определяется параметром запроса. То есть вы настраиваете Spring Безопасность как
<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
является атрибутом сеанса, я думаю, вы можете reset его использовать следующий подход:
<c:remove var = "SPRING_SECURITY_LAST_EXCEPTION" scope = "session" />