-
remember-meSPRING/스프링 시큐리티 2021. 8. 1. 17:24
1. 세션이 만료되고 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능
2. Remember-Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인이 됨.
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired UserDetailsService userDetailsService; @Override protected void configure(HttpSecurity http) throws Exception { // 모든 리소스에 대한 인증완료시 접근 허용 http .authorizeRequests() .anyRequest().authenticated(); // form Login 사용 http .formLogin(); // LogOut http .logout() // 로그아웃 처리 .logoutUrl("/logout") // 로그아웃 처리 URL .logoutSuccessUrl("/login") // 로그아웃 성공 후 이동페이지 .addLogoutHandler(new LogoutHandler() { // 로그아웃 후 쿠기 삭제 @Override public void logout(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) { HttpSession session = httpServletRequest.getSession(); session.invalidate(); } }) .logoutSuccessHandler(new LogoutSuccessHandler() { // 로그아웃 핸들러 @Override public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { httpServletResponse.sendRedirect("/login"); } }) .and() .rememberMe() .rememberMeParameter("remember") // 기본 파라미터명은 remember-me .tokenValiditySeconds(3600) // Default는 14일 .userDetailsService(userDetailsService); // 리멤버 미 기능이 활성화되지 않아도 항상 실행 } }
로그인 화면
로그인 후 쿠키를 보면 아래와 같이 JSESSIONID 외에 remember-me가 생긴 것을 볼 수 있다.
JSESSIONID의 Value를 제거해도 remember-me가 있기 때문에 로그인 상태가 유지된다.
rememberMeParameter의 name
'SPRING > 스프링 시큐리티' 카테고리의 다른 글
세션 정책 및 고정세션 공격방지 (0) 2021.08.03 로그아웃 (0) 2021.08.01 FORM 인증 - 기본 (0) 2021.08.01 Security Configuration 클래스 기본 설정 (0) 2021.08.01 의존성 추가 및 기본 세팅 (0) 2021.08.01