인프런 커뮤니티 질문&답변

창신동 장첸님의 프로필 이미지

작성한 질문수

스프링 시큐리티

RememberMe 의 user계정 조회

작성

·

161

0

TokenBasedRememberMeServices 를 강의에서 설명하실 때 메모리상에 있는 user계정 정보를 조회하는 용도로 쓰인다고 설명해주셨습니다.

저 클래스를 찾아보니 아래와 같은 구현 상속관계를 갖습니다.

TokenBasedRememberMeServices -> AbstractRememberServices -> RememberServices

 

반면, 강의의 SecurityConfig.java 에서 설정을 해주실 때 작성했던 코드입니다.

@Autowired
    UserDetailsService userDetailsService;
http.rememberMe()
        .rememberMeParameter("remember")
        .tokenValiditySeconds(3600)
        .userDetailsService(userDetailsService)
;

강의 6) Remember Me 인증 07:05 에서도 user계정을 조회하는 용도로

인터페이스userDetailsService 에 빈을 주입한다고 하셨습니다.

(주입되는 구현 클래스의 정체를 모르겠습니다)

 

질문.

위 글에서 먼저 언급했던RememberServices 인터페이스와

userDetailsService 인터페이스는 서로 다른 인터페이스인데 두 인터페이스의 관계를 어떻게 바라봐야하는지 궁금합니다.

두 인터페이스의 구현클래스 모두 "user계정을 조회" 하는 기능으로 소개를 해주셔서 질문드립니다.

 

답변 1

1

정수원님의 프로필 이미지
정수원
지식공유자

RememberMeService 에서는 remember-me 쿠키가 존재할 때 자동인증을 하게 됩니다.

이 때 remember-me 쿠기를 parse 해서 나온 username 값을 가지고 현재 시스템에 계정이 존재하는지 질의하게 되는데 이 때 위 설정에서 정의한 userDetailsService 를 사용하게 됩니다.

그렇기 때문에 RememberMeService 에서는 userDetailsService 를 필요로 합니다.

그래서 userDetailsService 를 빈으로 생성해서 설정해 주어야 합니다.

답변 감사합니다 이해했습니다!