본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Security> Logout

config에 로그아웃 기능을 추가한다.

 

 

홈페이지에는 로그아웃 기능 버튼을 추가한다.

이 버튼을 눌렀을 때 전송되는 URL을 contextroot/logout 으로 지정했다..

왜냐하면 security filter 에서 로그아웃에 관련한 데이터를 받는 기본 url값이 logout이기 때문이다.

그렇다면 로그아웃 url을 마음대로 바꿀 수 있을까???

 

security config 클래스에서 

.and( )

.logout( )

.logoutUrl("/blahblah")

.permitAll( );

을 추가설정하면 된다. 

이 기능으로 로그아웃 버튼의 action url 값을 맘대로 설정할 수 있다..

 

 

로그아웃 버튼을 누르고 성공적으로 작동하면 로그인 페이지에 가게 되고 로그아웃이 됐다는 메시지를 띄울 수 있다.

파라미터 값에 logout 값이 있는지 확인하여 기능을 작동시키는데

이것은 Spring Security 의 기본 flag 값이다.

우리는 역시 로그아웃에 관련된 flag값을 마음대로 바꿀 수 있다.

 

.and()

.logout()

.logoutUrl("/blahblah")

.logoutSuccessUrl("/showMyLoginPage?suceeslogout")

.permitAll();

 

이렇게 할 수 있다.


 

아무튼 성공적으로 로그아웃 버튼이 생겼고 버튼을 누르면 로그아웃 메시지를 볼 수 있다. 

 

 

 

로그인/로그아웃 과정을 정리해보면

처음에 홈페이지에 가기전 필터를 거친다.

loginPage("/showMyLoginPage") 으로 인해서 로그인 컨트롤러에 간다.

로그인 컨트롤러에서 로그인 페이지를 보여준다.

로그인 버튼을 누르면 필터에 있는 url 인 /authenticateTheUser 로 데이터 전송

필터는 데이터를 받고 전송받은 데이터와 메모리 데이터 확인

맞으면 홈페이지로 이동

틀리면 필터는 에러 flag를 url에 둔다. 로그인 페이지에서 확인하여 메시지 출력

 

홈페이지에서 로그아웃 버튼을 누르면 logout url로 데이터 전송

필터는 데이터를 받고 로그인컨트롤러 /showMyLoginPage 로 이동

로그인 컨트롤러는 로그인페이지 출력

로그인 페이지는 url에서 로그아웃 flag를 확인하고 메시지 출력