package ru.hflabs.rcd.web.handler; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.DefaultRedirectStrategy; import org.springframework.security.web.RedirectStrategy; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * Класс <class>AuthenticationFailureEventHandler</class> реализует обработчика событий неудачных аутентификаций * * @see AuthenticationFailureHandler */ public class AuthenticationFailureEventHandler implements AuthenticationFailureHandler, AccessDeniedHandler { /** Шаблон URL-f перенаправления */ private final String urlTemplate; /** Стратегия перенаправления */ private final RedirectStrategy redirectStrategy = new DefaultRedirectStrategy(); public AuthenticationFailureEventHandler(String urlTemplate) { this.urlTemplate = urlTemplate; } @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { redirectStrategy.sendRedirect(request, response, String.format(urlTemplate, exception.getClass().getSimpleName())); } @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException exception) throws IOException, ServletException { request.getRequestDispatcher(String.format(urlTemplate, exception.getClass().getSimpleName())).forward(request, response); } }