я использовал учебник по этой ссылке:Spring не показывая
http://www.mkyong.com/spring-security/display-custom-error-message-in-spring-security/
Чтобы показать сообщение об ошибке на форме входа в систему, и я получил его в начале. Но после того, как объявить аутентификации безотказной-обработчик-реф = «myAuthErrorHandler» для пользовательского обработчика отказа аутентификатора я не могу видеть это пользовательское сообщение на форме авторизации:
Что я делаю неправильно? Может ли кто-нибудь объяснить мне, что произойдет и почему «Неверное имя пользователя или пароль» не отображается?
Вот код:
AuthentificationListener
public class AuthentificationListener implements AuthenticationFailureHandler {
@Override
public void onAuthenticationFailure(HttpServletRequest request,
HttpServletResponse response, AuthenticationException ae)
throws IOException, ServletException {
UsernamePasswordAuthenticationToken user = (UsernamePasswordAuthenticationToken) ae
.getAuthentication();
/* User */
response.sendRedirect(request.getContextPath()
+ "/abc/main/loginfailed");
}
}
applicationContext.xml:
<bean id="myAuthErrorHandler" class="org.abc.handler.AuthentificationListener"/>
Spring Security:
<http auto-config="true">
<intercept-url pattern="/abc/main/welcome*" access="ROLE_USER" />
<intercept-url pattern="/abc/main/record/**" access="ROLE_USER" />
<form-login
login-page="/abc/main/login"
authentication-failure-handler-ref="myAuthErrorHandler"
default-target-url="/abc/main/welcome"
/>
<logout logout-success-url="/abc/main/logout" />
</http>
login.jsp:
<c:if test="${not empty error}">
<div class="errorblock">
Your login attempt was not successful, try again.<br /> Caused :
${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
</div>
</c:if>
LoginController.java:
@RequestMapping(value="/loginfailed", method = RequestMethod.GET)
public String loginerror(ModelMap model) {
model.addAttribute("error", "true");
return "login";
}
Update: Чтобы ответить на Мани ответ, я м с использованием Контроллер, который перенаправляет loginfailed запросов login.jsp и отправку «ошибки» атрибута с «истинного» значением. Проблема в том, что я не могу увидеть сообщение на login.jsp используя это выражение:
${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
Любая идея? Спасибо Большое!
Я уже ответил вам на обновление на этой должности, но я не могу понять, что я делаю неправильно. Может быть, перенаправление вы мне говорите? Как я должен перенаправить его должным образом в соответствии с тем, что вы говорите мне в ответ ?. Благодарю. – Ricardo
@ Ricardo F Обновлено ответ – Mani
Хорошо, и как мне переписать AuthentificationListener.java для обработки таких ошибок в обработчике сбоев? После исправления этого я хотел использовать этот обработчик для управления входами, чтобы обновить количество попыток. Но это уже другая история. Спасибо за помощь! – Ricardo