오늘 프로젝트를 하면서 스프링 시큐리티에 대해서 다시 복습하는 시간을 가졌다.
예전에 프로젝트를 하면서 스프링 시큐리티에 대해서 굉장히 대충 공부하고 넘어갔는데 , 이번에는 좀 자세하게 들여다봤다.
우선 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 |
댓글