LogoutFilter 란?
LogoutFilter는 Spring Security 에서 로그아웃에 대한 처리를 담당하는 필터로 사용자가 특정
로그아웃 URL로 로그아웃을 요청 했을 경우에만 적용되는 필터이다.
LogoutFilter는 세션 무효화, 인증토큰 삭제 등 Security Context에서 해당 인증 객체를 삭제한다.
아래는 LogoutFilter 클래스와 doFilter 메서드이다.
requiresLogout() 메서드를 통해 요청된 URL이 로그아웃 URL인지 확인한다.
아래는 requiresLogout 메서드이다.
RequestMatcher 의 matches 를 통해 URL 정보를 확인하고 맞으면 true 를 리턴한다.
로그아웃 URL 이 맞을 경우SecurityContextHolder 에서 Authentication 인증 객체를 불러온다.
가져온 인증객체를 this.handler 인 LogoutHandler 를 통해 로그아웃 로직을 진행한다.
아래는 LogoutHandler의 Logout Hanlder는 기본적으로 인터페이스를 구현한 CompositeLogoutHandler 이다.
CompositeLogoutHandler 는 LogoutHandler 를 구현한 전체 클래스들의 리스트를 List<LogoutHandelr> 형태로
가지고 있다.
List<LogoutHandler> 를 반복하여 LogoutHandler를 구현한 클래스들의 logout 메서드를 호출 후
쿠키 삭제, SecurityContext 에서 인증객체 삭제 등 로그아웃 로직을 수행한다.
List<LogoutHanlder> 의 내용은 아래와 같다.