Spring/Spring Security

[Spring Security] Remember Me 인증(로그인 상태 유지)

빅콜팝 2022. 10. 27. 20:07
728x90
반응형
Remember Me
로그인 세션(JESSIONID)이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능



해당 기능을 구현하기 위해서는 스프링 시큐리티가 적용되어 있어야 한다.

 

[Spring Security] Spring Security 설정하기

import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.ann..

zhfvkq.tistory.com

 

import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@RequiredArgsConstructor
public class SecurityConfig {

    private final UserDetailsService userDetailsService;

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        
        ...

        http.rememberMe() // 사용자 계정 저장
                .rememberMeParameter("remember") // default 파라미터는 remember-me
                .tokenValiditySeconds(604800) // 7일(default 14일)
                .alwaysRemember(false) // remember-me 기능 항상 실행
                .userDetailsService(userDetailsService); // 사용자 계정 조회


        return http.build();
    }

	...

}

 

<!-- 로그인 상태 유지 체크박스 -->
<input class="form-check-input" type="checkbox" th:field="*{remember}" id="remember" />

로그인 상태 유지 체크 후 로그인

 

개발자 도구(F12) aplication > cookie


개발자 도구에서 확인해 보면 remember-me 토큰생성됐으며, 토큰 만료일이 7일 후로 설정된 것을 볼 수 있다.

이렇게 생성된 remember-me 토큰은 로그아웃, 로그인 사태 유지 체크박스 해제 후 재 로그인을 통해 삭제가 가능하다.

728x90
반응형