
Remember Me 기능은 사용자 세션이 만료되고 웹 브라우저가 종료된 후에도 애플리케이션이 사용자의 정보를 기억하는 기능입니다.
사용자가 로그인을 할 때 Remember me기능을 활성화 시킬 경우 서버에서는 Remember Me 쿠키를 생성하게 된다. 그 후 로그인을 할 때는 애플리케이션에 저장되어 있는 Remember Me쿠키를 갖고 http header에 쿠키를 담아서 request를 보내게 되며 server는 http header를 확인한 후 토큰 기반의 인증을 통해 유효성 검사를 하고 로그인 승인을 해줍니다.

RememberMeAuthenticationFilter는 세션에 SecurityContext가 Null일 때(인증 객체가 없는 경우), 또는 사용자의 Request http header에 remember me쿠키가 있는 경우 동작을 하게 된다.RemembeMeService는 인터페이스로 TokenBasedRememberMeServices와 PersistentTokenBasedRememberMeServices 구현체가 있습니다. 이 두 구현체가 실제로 remember me인증 처리를 하는 구현체이다.TokenBasedRememberMeServices는 메모리에 있는 토큰과 사용자가 request header에 담아서 보낸 토큰을 비교하여 인증을 한다. (기본적으로 14일만 토큰을 유지한다.)PersistentTokenBasedRememberMeServices는 DB에 저장된 토큰과 사용자가 request header에 담아서 보낸 토큰을 비교하여 인증을 한다. (영구적인 방법)AuthenticationManager를 통해 인증처리를 하게 됩니다.※ 3~5는
RememberMeServices의 내부에서 일어나는 과정입니다.
http.rememberMe()를 confige에 넣어주게 되면 해당 기능이 활성화됩니다.
아래의 사진은 remember me기능이 활성화된 spring security의 기본 폼의 이미지입니다.

remember me의 설정 api들은 다음과 같습니다.
protected void configure(HttpSecurity http) throws Exception {
http.rememberMe()
.rememberMeParameter(“remember”)
.tokenValiditySeconds(3600)
.alwaysRemember(true)
.userDetailsService(userDetailsService)
}
rememberMeParameter(“remember”): remember me의 파라미터 명을 설정하는 api입니다. default 값은 remember-me입니다.tokenValiditySeconds(3600): remember me쿠키의 만료 시간을 설정하는 api로 default값은 14일 입니다.alwaysRemember(true): remember me 기능이 활성화되지 않아도 항상 실행하도록 설정하는 기능입니다. (일반적으로는 false)userDetailsService(userDetailsService): remember me기능을 수행할 때 시스템의 사용자 계정을 조회할 때 처리를 설정하는 api입니다.