[Spring Security] Remember Me 구현하기

2024. 1. 4. 14:22백엔드/Spring Boot

# Remember Me 기능이란 

  • 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능이다. 
    Ex. 사용자 ID 기억하기, 자동 로그인
  • Remember-Me 쿠키에 대한 HTTP 요청을 확인 후 토큰 기반 인증을 사용해 유효성을 검사하고 검증이 완료되면 로그인이 성공적으로 이루어진다. 
  • 사용자 라이프 사이클 
    • 인증 성공 👉 Remember-Me 쿠키 설정
    • 인증 실패 👉 쿠키가 존재하면 쿠키 무효화 
    • 로그아웃 👉 쿠키가 존재하면 쿠키 무효화

 

 

# Remeber Me API에 대하여 알아보자

  • rememberMeParameter() : remember-me 파라미터 이름 설정, 기본 파라미터명은 remember-me
  • tokenValiditySeconds() : 쿠키 만료 시간 설정, Default : 14일 
  • alwaysRemember() : remember-me 기능 항상 실행 
  • userDetailsService() :필수, 사용자 객체를 조회할 클래스 정보

 

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    private final UserDetailsService userDetailsService;

    @Autowired
    public SecurityConfig(UserDetailsService userDetailsService) {
        this.userDetailsService = userDetailsService;
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        // 페이지 인증, 로그인, 로그아웃 코드 생략...

        // rembmerme
        http.rememberMe(
            remember -> remember
                    .rememberMeParameter("remember") // remember-me 파라미터 이름 설정, 기본 파라미터명은 remember-me
                    .tokenValiditySeconds(3600) // 쿠키 만료 시간 60분으로 설정,  Default : 14일
                    .alwaysRemember(true) // 리멤버 미 기능이 활성화되지 않아도 항상 실행
                    .userDetailsService(userDetailsService) // 사용자 객체를 조회
        );
        return http.build();
    }

 

 

remember-me 활성화 상태

 

 

Reference

인프런 '스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security' - 정수원

 

스프링 시큐리티 강의 - 인프런

초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과

www.inflearn.com