EgovSpringSecurityLoginFilter 에서 로그인 실패 핸들러를 구현하려면 어떻게 해야 하나요?
- 작성자 :
- 김*현
- 작성일 :
- 2021-07-22 09:22:03
- 조회수 :
- 3,486
- 구분 :
- 공통컴포넌트 /
- 진행상태 :
- 완료
Q
EgovSpringSecurityLoginFilter 클래스를 사용중이고 실패 핸들러를 만들어서 관리하는 방법이 알고 싶어 질문드립니다.
예를 들어
if (requestURL.contains(loginProcessURL)) {
String password = httpRequest.getParameter("password");
// 보안점검 후속 조치(Password 검증)
if (password == null || password.equals("") || password.length() < 9 || password.length() > 50) {
httpRequest.setAttribute("message", egovMessageSource.getMessage("fail.common.login.password",request.getLocale()));
RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(loginURL);
dispatcher.forward(httpRequest, httpResponse);
//chain.doFilter(request, response);
return;
}
코드를 통해 실패하는 경우 dispatcher.foward를 통해 loginURL에 담긴 주소로 메시지를 갖고 forward합니다.
따라서 사용자 화면은 loginURL이나 주소창에는 loginProcessURL이 적혀 있게 됩니다.
이 외에도 실패하는 경우 dispatcher.forward(httpRequest, httpResponse); 로 작성되어 있던데
여기서 포워드 하지 않고 실패 핸들러를 작성해서 redirect처리를 하고 싶습니다.
그런데 여기서 '실패'했을 때 위임?을 어떻게 하는지 모르겠어요.
context-security.xml 설정 파일에
loginFailureUrl="실패시.do"로 작성해놓았습니다.
EgovSpringSecurityLoginFilter 처리 중 위와 같이 실패한 경우 실패시.do로 이동하게 하려면 필터를 어떻게 수정해야 하는지 알고 싶어요.
예를 들어
if (requestURL.contains(loginProcessURL)) {
String password = httpRequest.getParameter("password");
// 보안점검 후속 조치(Password 검증)
if (password == null || password.equals("") || password.length() < 9 || password.length() > 50) {
httpRequest.setAttribute("message", egovMessageSource.getMessage("fail.common.login.password",request.getLocale()));
RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(loginURL);
dispatcher.forward(httpRequest, httpResponse);
//chain.doFilter(request, response);
return;
}
코드를 통해 실패하는 경우 dispatcher.foward를 통해 loginURL에 담긴 주소로 메시지를 갖고 forward합니다.
따라서 사용자 화면은 loginURL이나 주소창에는 loginProcessURL이 적혀 있게 됩니다.
이 외에도 실패하는 경우 dispatcher.forward(httpRequest, httpResponse); 로 작성되어 있던데
여기서 포워드 하지 않고 실패 핸들러를 작성해서 redirect처리를 하고 싶습니다.
그런데 여기서 '실패'했을 때 위임?을 어떻게 하는지 모르겠어요.
context-security.xml 설정 파일에
loginFailureUrl="실패시.do"로 작성해놓았습니다.
EgovSpringSecurityLoginFilter 처리 중 위와 같이 실패한 경우 실패시.do로 이동하게 하려면 필터를 어떻게 수정해야 하는지 알고 싶어요.
환경정보
-
- OS 정보 : 윈도우10, 리눅스
- 표준프레임워크 버전 : 3.9
- JDK(JRE) 정보 : 1.8
- WAS 정보 : 톰캣8.0
- DB 정보 : postgresql
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
문의하신것처럼 처리되기 위해선
Spring Security 에서 로그인 실패 후 처리하는
AuthenticationFailureHandler 를 사용해야 하는데
표준프레임워크 시큐리티 간소화 서비스에서는
해당 기능을 지원하고 있지 않습니다.
별도로 Security 를 설정하여
AuthenticationFailureHandler 의 onAuthenticationFailure() 메소드에
필요한 로직을 구현하여 사용하실 수 있으니 참고하시기 바랍니다.
감사합니다.
표준프레임워크센터입니다.
문의하신것처럼 처리되기 위해선
Spring Security 에서 로그인 실패 후 처리하는
AuthenticationFailureHandler 를 사용해야 하는데
표준프레임워크 시큐리티 간소화 서비스에서는
해당 기능을 지원하고 있지 않습니다.
별도로 Security 를 설정하여
AuthenticationFailureHandler 의 onAuthenticationFailure() 메소드에
필요한 로직을 구현하여 사용하실 수 있으니 참고하시기 바랍니다.
감사합니다.