안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
로그인 후처리
security-context.xml
<form-login
login-page="/member/memberLogin.do"
login-processing-url="/member/memberLogin.do"
default-target-url="/"
always-use-default-target="false"
username-parameter="memberId"
password-parameter="password"
authentication-success-forward-url="/member/memberLoginSuccess.do" />
로그인 후처리를 위해 authentication-success-forward-url을 이용하였습니다.
로그인 성공 시 해당 핸들러를 거치도록 처리!
(authentication-success-handler-ref 로도 처리 가능)
Controller
MemberSecurityController
@PostMapping("/memberLoginSuccess.do")
public String memberLoginSuccess(HttpSession session) {
log.debug("memberLoginSuccess 호출!");
// 로그인 후처리
String location = "/";
// security가 관리하는 다음 리다이렉트 url
SavedRequest savedRequest = (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST");
if(savedRequest != null) {
location = savedRequest.getRedirectUrl();
}
log.debug("location = {}", location);
return "redirect:" + location;
}
다음 이동할 페이지를 security가 관리해주므로 security에게 RedirectUrl를 가져와 처리해줍니다.
"SPRING_SECURITY_SAVED_REQUEST"를 세션에서 가져와주며, 다음 이동할 url이 있었다면 해당 url을 가져와 location에 대입해주었습니다.
(없었다면 SavedRequest가 null이므로 "/"로 리다이렉트 처리!)
게시판 페이지 접속 - 로그인 처리 후 콘솔출력값
DEBUG: com.ce.spring2.common.interceptor.LogInterceptor - ==============================================
DEBUG: com.ce.spring2.common.interceptor.LogInterceptor - POST /spring2/member/memberLoginSuccess.do
DEBUG: com.ce.spring2.common.interceptor.LogInterceptor - ----------------------------------------------
DEBUG: com.ce.spring2.member.controller.MemberSecurityController - memberLoginSuccess 호출!
DEBUG: com.ce.spring2.member.controller.MemberSecurityController - location = http://localhost:9090/spring2/board/boardList.do
DEBUG: com.ce.spring2.common.interceptor.LogInterceptor - +++++++++++++++++++++++++++++++++++++++++++++++
DEBUG: com.ce.spring2.common.interceptor.LogInterceptor - mav = ModelAndView [view="redirect:http://localhost:9090/spring2/board/boardList.do"; model={}]
DEBUG: com.ce.spring2.common.interceptor.LogInterceptor - ***********************************************
memberLoginSuccess 핸들러를 거쳐간 것을 확인할 수 있으며, 바로 board/boardList로 리다이렉트 처리 된 것을 확인할 수 있습니다.
'Java > Spring' 카테고리의 다른 글
Spring) Security - 인증된 사용자 정보 가져오기, 처리 순서 파악 (2) | 2022.09.11 |
---|---|
Spring) Security - DB에 있는 사용자 조회(로그인 처리), UserDetails/UserDetailsService (2) | 2022.09.11 |
Spring) Security - 커스텀 로그인/로그아웃 페이지, CSRF 공격대비 설정(403에러), error처리 (0) | 2022.09.11 |
Spring) Spring Security - 설정 및 관련 설정 구체화 (설명 포함) (0) | 2022.09.10 |
Spring) Builder Pattern - 흐름 파악, @Builder (0) | 2022.09.10 |