진짜 개발자
본문 바로가기

FrameWork/Spring Security

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

728x90
Spring Security Logout 구현

SpringSecurity 이용하기 - 1 : https://galid1.tistory.com/688  (custom login form 구현)

SpringSecurity 이용하기 - 2 : https://galid1.tistory.com/698 (login Success Handle)

SpringSecurity 이용하기 - 3 : 현재 포스트 (logout 기능 추가하기)

SpringSecurity 이용하기 - 4 : https://galid1.tistory.com/700 (database를 이용한 로그인 구현)






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

 

 

 

Spring Security Logout 구현

1. Security Config 설정

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

 

주의할점

- logourt()을 csrf와 사용하는 경우 무조건 post요청을 통해 logout을 해야합니다.

- 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/으로 요청을 해도 로그인을 하라는 페이지가 나타납니다.