본문 바로가기

FrameWork/Spring Security

Spring Security - SpringSecurity 이용하기 3 (logout 기능 추가하기)

Spring Security Logout 구현

SpringSecurity 이용하기 - 1 : https://galid1.tistory.com/688

SpringSecurity 이용하기 - 2 : https://galid1.tistory.com/698

SpringSecurity 이용하기 - 3 : 현재 포스트

SpringSecurity 이용하기 - 4 : https://galid1.tistory.com/700






이번 포스팅에서는 SpringSecurity를 이용하여 Login한 유저를 Logout하는 방법에 대해 알아보겠습니다. 이전 포스팅과 이어지므로 읽고오시는것을 추천드립니다.

 

 

 

Spring Security Logout 구현

1. Security Config 설정

이전에 설정한 부분에 이어서, .logout().logoutUrl("LOG_OUT_URL").logoutSuccessUrl("LOG_OUT_SUCCESS_URL");을 추가해주면 됩니다.

 

주의할점은 logout()은 formLogin()에 종속된 설정이 아니라 HttpSecurity의 메소드이므로, .and()를 통해 다시 HttpSecurity를 반환받은 뒤 .logout()을 호출해야 한다는 것입니다.

 

 

logout()

logout() 메소드는 Logout 관련 설정을 진행할 수 있도록 돕는, LogoutConfigurer<> 클래스를 반환합니다.

 

 

logoutUrl()

logoutUrl() 메소드는 loginProcessingUrl() 과 비슷한 기능으로, Client에서 SpringSecurity에게 logout을 요청하기 위한 url을 설정하는 메소드입니다.

default url은 /logout이기 때문에, 이 메소드를 이용해 별도설정을 하지 /logout으로 요청을 보내면 됩니다.

필자는 login설정과의 일관성을 위해 /doLogout으로 설정하겠습니다.

 

 

logoutSuccessUrl()

logoutSuccessUrl() 메소드는 로그아웃 성공시 사용자가 redirect될 url을 지정하는 메소드입니다. 로그아웃을 했으므로, 로그인 페이지로 사용자를 이동시키도록 하겠습니다.

 

 

 

2. index.html에 logout 버튼 생성

이전 포스팅에서 만들었던 index.html 페이지 입니다. /doLogout으로 요청을 보내는 <a>태그를 추가합니다.

 

 

 

3. 결과 확인

서버를 실행하고, 로그인을 한뒤, 로그아웃버튼을 클릭합니다.

 

로그인 페이지로 다시 이동이 됩니다. 로그아웃이 되었기 때문에, localhost/으로 요청을 해도 로그인을 하라는 페이지가 나타납니다.