Spring Security

[Security] Logout 처리 필터 (LogoutFilter)

cornarong 2021. 10. 4. 22:43

원칙적으로 로그아웃 시 스프링 시큐리티에서는 post 요청을 처리한다.

logout을 실행하면 logout 처리와 logout과 관련된 요청을 처리하는 필터가 LogoutFilter이다.

 

전체적인 로그아웃 처리의 흐름을 살펴보자.

사용자가 로그아웃을하면 post방식으로 요청을 하고 LogoutFilter가 요청을 받는다.

 

AntPathRequestMatcher(/logout)에서 해당 경로로 요청한 것이 맞는지 매칭을 한다.

매칭 실패 시 chain.doFilter을 호출하게 되고 (Default는 "/logout" 이다.)

 

매칭 성공시 인증 객체를 담고 있는 SecurityContext에서 인증 객체를 꺼내 SecurityContextLogoutHandler 로 전달한다.

 

SecurityContextLogoutHandler에서 세션 무효화, 쿠키 삭제, SecurityContext초기화 작업등을 진행한다.

 

정상적으로 SecurityContextLogoutHandler가 종료되면 LogoutFilterSimpleUrlLogoutSuccessHandler를 호출하여

로그인 페이지로 이동하도록 Redirect 한다.