728x90

스프링 시큐리티는 기본적으로 POST 방식의 로그아웃을 진행한다

 

스프링 시큐리티가 제공해주는

기본 화면은 다음과 같다

 

 

 

 

개발자 모드에서 확인 하면 POST 인걸 확인 할 수 있다

 

 

참고로, 로그아웃과 관련된 필터는 LogoutFilter 이다 

 

대략 흐름은

 

1. 시큐리티 컨텍스트에서 인증객체를 가져온다

2. 로그아웃을 진행 (request와 response와 인증객체)

3. 로그아웃 성공 핸들러 동작

 

이런 메커니즘을 가지고있다, 또 로그아웃 페이지도 생성된다

 

 

 

두가지 방법으로 GET 방식을 사용해보자

 

 

 

v1. LogoutFilter 는 사용하되 , GET으로만 변경하기

 

설명할것도 없이 간단하다 :)

 

 

 

 

 

v2. LogoutFilter 를 사용하지 않고, 직접 로그아웃 프로세스 구현하기

구현하기 전에 로그아웃에 대하여 생각해보자

 

1. 시큐리티 컨텍스트 초기화

2. 세션 초기화

3. 쿠키 삭제

 

 

이정도 처리를 해줘야할 것 같다

 

 

로그아웃은 로그인을 해야 할 수 있는 기능이다 따라서 ROLE_USER 권한을 주었다

 

requestCache 설정을 비활성화 했다,

따라서 RequestCacheAwareFilter 필터를 생성하지 않는다

 

logout 설정을 비활성화 했다,

따라서 RequestCacheAwareFilter 필터를 생성하지 않는다

 

두 설정은 최초에 /mylogout -> login 화면 -> 로그인 진행  -> 캐쉬로 인해 /mylogout 재호출

이를 방지하려고 그냥 껏다

 

 

 

 

이제 /mylogout 컨트롤러를 보자

 

 

그렇게 깨긋한 코드는 아니지만 의미는 전달될거라 생각한다

 

로그아웃 컨트롤러에서

컨텍스트를 초기화하고, 세션을 지우고, 쿼리스트링을 추가하여 메인화면으로 리다이렉트했다

그리고 메인화면에서 쿼리스트링이 있다면 추가로 사용자의 쿠키까지 삭제했다

 

일단 여기까지 끝.

 

 

 

 

 

728x90

+ Recent posts