강의 영상에선 다루지 않았지만 로그인 시 Remember Me 기능을 구현해보고 싶어 관련 내용을 찾아보았습니다.
스프링 시큐리티에서 이와 관련하여 이미 다 내장하여 제공하고 있는 메서드들이 있어 생각보다 손쉽게 구현할 수 있었습니다.
📝 1. SecurityConfig 클래스 수정
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.rememberMe()
.rememberMeParameter("remember")
.tokenValiditySeconds(3600)
.alwaysRemember(false)
.userDetailsService(principalDetailService)
.and()
.authorizeRequests()
.antMatchers("/", "/auth/**", "/js/**", "/css/**", "/image/**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/auth/loginForm")
.loginProcessingUrl("/auth/loginProc")
.failureHandler(userLoginFailHandler)
.defaultSuccessUrl("/");
return http.build();
}
추가된 메서드는 rememberMe(), rememberMeParameter(), tokenValiditySeconds(), alwaysRemember(), userDetailService() 입니다.
하나씩 간단하게 살펴보자면 다음과 같습니다.
- rememberMe(): Remember Me 기능을 동작 시킴
- rememberMeParameter(): 로그인 페이지에서 Remember Me 부분은 보통 체크박스로 구현할 텐데 이 때 해당 체크박스의 name 속성 값을 지정해주면 됨
- tokenValiditySeconds(): 초 단위로 remember-me 토큰의 유효시간을 설정
- alwaysRemember(): 사용자가 이 기능을 사용한다고 체크하지 않아도 자동으로 사용하게 하는 기능(기본값은 false)
- userDetailService(): Remember Me 기능을 사용하기 위해 필요한 사용자 정보
📌 Reference
'🚗 Backend Toy Project > 스프링 부트 게시판' 카테고리의 다른 글
[스프링부트 게시판] 26. 커스텀 Validation을 통한 중복 검사 구현 (0) | 2022.07.02 |
---|---|
[스프링부트 게시판] 25. 회원가입시 validation 체크 (0) | 2022.06.30 |
[스프링부트 게시판] 23. 로그인 실패 예외 처리 (0) | 2022.06.28 |
[스프링부트 게시판] 22. 개선 및 수정사항 (0) | 2022.06.25 |
[스프링부트 게시판] 21. 댓글 구현 (2) | 2022.05.17 |