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

weekbelt님의 프로필 이미지
weekbelt

작성한 질문수

스프링 시큐리티

4) DB 연동 인증 처리(1) : CustomUserDetailsService

UserDetailsService에 대해 질문이 있습니다

작성

·

454

0

안녕하세요 스프링시큐리티 아키텍처를 공부하는데 엄청난 도움을 받고 있습니다. 

UserDetailsService를 구현하는 구현체를 만들면서 궁금증이 생겼습니다.

username과 password를 검증하는 Provider가 UserDetailsService를 의존해서 loadUserByUsername()메서드를 통해서 DB에 있는 사용자 정보를 가져와서 검증을 하게 되는데 만약 Provider에서 UserDetailsService의 구현체가 아닌 그냥 커스텀한 UserService를 의존해서 UserDetails타입이 아닌 커스텀한 User를 가져와 검증을 해도 상관없는지 궁금합니다. 실제로 그렇게 해봤을때 인증이 되긴 하는데 다른 사이드 이펙트가 발생할 수 있는지 궁금합니다.

답변 1

1

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

네 맞습니다.

UserDetailsService 를 사용하는 것이 필수 조건은 아닙니다.

 커스텀하게 서비스를 만들어 사용하셔도 됩니다.

다만 스프링 시큐리티에서는 기본적으로 UserDetails 타입의 객체를 활용하는 여러 구현클래스들을 제공하고 있고 불가피한 경우가 아니면 UserDetails 타입의 객체를 사용하는 것이 좋습니다.

크게 염려할 정도의 사이드가 발생하지는 않을 것이지만 경우에 따라서는 UserDetails 타입의 객체를 참조해야 하는 상황이 발생할 수 도 있습니다.

결론은 사용해도 괜찮습니다.

weekbelt님의 프로필 이미지
weekbelt
질문자

친절한 답변 감사합니다!

weekbelt님의 프로필 이미지
weekbelt

작성한 질문수

질문하기