본문 바로가기
자바의 봄(Spring)/자바와 스프링 공부하기

UserDetailsService와 UserDetails에 대해

by 종안이 2024. 4. 1.

오늘 프로젝트를 하면서 스프링 시큐리티에 대해서 다시 복습하는 시간을 가졌다. 

 

예전에 프로젝트를 하면서 스프링 시큐리티에 대해서 굉장히 대충 공부하고 넘어갔는데 , 이번에는 좀 자세하게 들여다봤다.

 

우선 DB에 들어있는 사용자들을 불러와서 이메일과 패스워드 , 권한 관련 설정을 인터페이스가 있다 .

 

바로 UserDetailsService 라는 인터페이스다 . 

 

아래와 같은 모습을 하고 있다.

 

public interface UserDetailsService {
    UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}

 

그리고 이 인터페이스를 구현한 구현체(UserDetailsManager)와 상속받아 만든 클래스(JdbcDaoImpl .. , JdbcUserDetailsManager)들이 존재한다. 

 

 

이렇게 5개가 있다는 것을 알아두고 일단은 넘어가자 . 

 

그리고 UserDetailsService를 구현한 구현체를 하나 만들고 안에 있는 메소드를 오버라이드하면 

 

public class UserDetailsServiceImpl implements UserDetailsService {

    private UserRepository userRepository;

    public UserDetailsServiceImpl(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return null;
    }

 

위와 같은 loadUserByUsername이라는 메소드가 나오게 된다. 

 

이 메소드를 이용하여 사용자를 찾아내고 UserDetails 값으로 변환하여 리턴해주면 된다. 

 

그러면 이제 Spring 에서 로그인 요청을 받게 되면 DB에서

해당 유저의 유저명 , 비밀번호 , 권한 등을 자동으로 편리하게 (?) 처리해준다.

 

'자바의 봄(Spring) > 자바와 스프링 공부하기' 카테고리의 다른 글

양방향 연관 관계  (0) 2024.04.21
JPA란 무엇인가 ?  (0) 2024.04.20
JPA에서 인덱스 생성하기  (0) 2024.03.23
@Builder 패턴을 쓰는 이유  (0) 2024.03.09
HttpServletRequest  (0) 2024.02.05

댓글