진짜 개발자
본문 바로가기

FrameWork/Spring Security

Spring Security - SpringSecurity 이용하기 2 (login Success Handle)

728x90
이번 포스팅에서는 spring security formLogin 이용시, 로그인에 성공한 뒤 처리할 로직을 추가하는 방법과, logOut 기능을 추가하는 방법에 대해 알아보도록 하겠습니다

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

SpringSecurity 이용하기 - 2 : 현재 포스트 (login Success Handle)

SpringSecurity 이용하기 - 3 : https://galid1.tistory.com/699 (logout 기능 추가하기)

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







이번 포스팅에서는 spring security formLogin 이용시, 로그인에 성공한 뒤 처리할 로직을 추가하는 방법에 대해 알아보도록 하겠습니다.

 

 

https://galid1.tistory.com/688

이전 포스팅과 이어지는 내용이므로 참고하여 설정을 먼저 진행해주세요.

 

 

 

 

Spring Security에서 FormLogin 성공시 처리로직 추가

1. Security Config 설정

Spring Security에서 제공하는 FormLogin에 성공한뒤, 항상 실행하기를 원하는 로직을 추가하기 위해서는, .formLogin().successHandler()LoginSuccessHandler를 추가해주면 됍니다.

 

 

 

2. LoginSuccessHandler 생성

다음으로 SuccessHandler 클래스를 생성합니다. 이 LoginSuccessHandler는 AuthenticationSuccessHandler를 꼭 구현해야 합니다. 이후, 로그인 성공시 처리할 로직을 구현하면 됩니다.

 

저의 경우, session에 greeting이라는 key값으로 user의 이름 + 님 반갑습니다.라는 String값을 담아주었습니다. (login한 user의 이름은 AuthenticationSuccessHandler 구현시 오버라이딩 해야하는 메소드의 매개변수중 Authentication의 getName() 메소드를 통해 얻을수 있습니다.)

 

마지막으로, 모든 로직을 처리한 뒤, 사용자가 보게될 Page로 redirect를 해주어야합니다.

 

사용자가 보게될 페이지는 위의 handler를 보면 알 수 있듯이, index입니다.

 

 

 

3. index 페이지 생성

handlebars를 이용하여 Page를 렌더링할 것입니다. 이전 포스팅에서 이미 설정을 진행했습니다. 하지만 Page 렌더링시 session에 담겨있는 greeting을 가져오기위해서는 추가적인 설정을 해야합니다.

 

application.yml에 위와같이 expose-session-attributes: true를 추가합니다. 이를 통해 Spring handler에서 별도로 session값을 model에 설정하지 않아도, handlebars에서 바로 가져올수 있습니다.

 

 

위와 같이 간단히 index.html를 작성합니다.

 

 

 

4. 결과확인

서버를 실행하고, 접근하여 id에는 user를 pw에는 Spring security에서 자동으로 생성되는 암호(서버 실행 후, console창에 나타납니다.)를 입력합니다.