원칙적으로 로그아웃 시 스프링 시큐리티에서는 post 요청을 처리한다.
logout을 실행하면 logout 처리와 logout과 관련된 요청을 처리하는 필터가 LogoutFilter이다.
전체적인 로그아웃 처리의 흐름을 살펴보자.
사용자가 로그아웃을하면 post방식으로 요청을 하고 LogoutFilter가 요청을 받는다.
AntPathRequestMatcher(/logout)에서 해당 경로로 요청한 것이 맞는지 매칭을 한다.
매칭 실패 시 chain.doFilter을 호출하게 되고 (Default는 "/logout" 이다.)
매칭 성공시 인증 객체를 담고 있는 SecurityContext에서 인증 객체를 꺼내 SecurityContextLogoutHandler 로 전달한다.
SecurityContextLogoutHandler에서 세션 무효화, 쿠키 삭제, SecurityContext초기화 작업등을 진행한다.
정상적으로 SecurityContextLogoutHandler가 종료되면 LogoutFilter는 SimpleUrlLogoutSuccessHandler를 호출하여
로그인 페이지로 이동하도록 Redirect 한다.
'Spring Security' 카테고리의 다른 글
[Security] 세션 제어 필터 : SessionManagementFilter, ConcurrentSessionFilter (0) | 2021.12.09 |
---|---|
[Security] 동시세션제어, 세션고정보호, 세션정책 (0) | 2021.12.08 |
[Security] Remember Me 인증 필터 (RememberMeAuthenticationFilter) (0) | 2021.10.05 |
[Security] Form Login 인증 필터 (UsernamePasswordAuthenticationFilter) (0) | 2021.10.04 |
[Security] 스프링 시큐리티 설정 및 사용자 정의 보안기능 구현 (0) | 2021.10.03 |