내 로그인 양식은 /account/login
입니다. 이 URL로 GET 요청을하면 요청 처리기가 호출되어 논리적보기 이름으로 account/login
을 반환하고 /WEB-INF/jsp/account/login.jsp
이 처리됩니다. /account/login
에로그인 페이지 제공 실패한 로그인 시도시 JSP
@RequestMapping(value="/account/login", method=RequestMethod.GET)
public String login()
{
return "account/login";
}
POST 요청은 로그인 양식이 모두 (GET 통해)에 의해 제공됩니다, 그래서 내 UsernamePasswordAuthenticationFilter
를 호출하고 (POST를 통해)에 /account/login
를 제출합니다.
모두 훌륭한 작품입니다.
그러나, 로그인 실패의 경우에 나는 /WEB-INF/jsp/account/login.jsp
즉 /WEB-INF/jsp/account/login.jsp
서비스를 제공 할 /account/login
에 잘못된 사용자 이름/암호를 게시하는 HTTP가 리디렉션하지 않고 제공 될 싶습니다.
나는과 같이 SimpleUrlAuthenticationFailureHandler.onAuthenticationFailure()
을 무시 시도했다 : /account/login
에 잘못된 사용자 이름/암호를 게시 할 때
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException
{
request.getRequestDispatcher("account/login").forward(request, response);
}
그러나,이 404 응답을 초래한다.
나는 , /account/login.jsp
및 많은 다른 조합을 ServletRequest.getRequestDispatcher()
에 전달하려고했지만 아무 것도 작동하지 않는 것 같습니다.
내가 잘못하고있는 아이디어가 있습니까? 디스패처가 JSP 자체가 아니라 요청 처리기로 디스패치하려고한다는 느낌이 들지만, JSP 전달 워크 플로 전체에 익숙하지 않아이를 해결하는 방법을 알지 못합니다.