Как перенаправить на страницу входа с сообщением об ошибке от CustomAuthenticationFailureHandler в безопасности Spring - PullRequest
0 голосов
/ 30 августа 2018

Я реализовал customAuthenticationFailureHandler, чтобы настроить реакцию на ошибку для разных источников.

Когда я выбрасываю исключение из customAuthenticationFailureHandler, он показывает URL ошибки входа по умолчанию, который является /login?error.

Но там я не получаю SPRING_SECURITY_LAST_EXCEPTION.

Вот мой код.

@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
    AuthenticationException exception) throws IOException, ServletException {
    System.out.println(exception.getMessage());
    String requestSource = request.getHeader(Constants.HTTP_REQUEST_HEADER_SOURCE);
    if (!Constants.HTTP_REQUEST_HEADER_SOURCE_MOBILE.equals(requestSource)) {
        throw exception;
    } else {
        JSONObject res = new JSONObject();
        res.put("statusCode", HttpServletResponse.SC_UNAUTHORIZED);
        res.put("statusMessage", (exception.getMessage()!=null)?exception.getMessage():"Bad credentials");
        response.getWriter().write(res.toJSONString());
    }
}


<security:form-login login-page="/login"
        default-target-url="/system" authentication-failure-url="/login?error"
        username-parameter="username" password-parameter="password" 
        authentication-success-handler-ref="customAuthenticationSuccessHandler"
        authentication-failure-handler-ref="customAuthenticationFailureHandler"/>

Вместо исключения я попробовал также response.sendRedirect("login/error");.

В обоих случаях я не получаю SPRING_SECURITY_LAST_EXCEPTION на странице входа в систему.

Кто-нибудь, пожалуйста, помогите мне решить эту проблему.

Спасибо Sanooj M

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...