Spring Security) User와 UserDetails 차이

Dokuny·2022년 1월 12일
2

Spring Security

목록 보기
5/7

스프링 시큐리티 공부하다가 UserDetailsServiceloadUserByUsername(String username) 메소드의 리턴 값으로 어떨때는 UserDetails의 직접만든 구현객체를, 어떨 때는 User를 반환 해주는 경우를 봐서 왜 이렇게 하지라는 생각에 코드를 까서 확인해보니

public class User implements UserDetails, CredentialsContainer{
		
        
       	private String password;

	private final String username;

	private final Set<GrantedAuthority> authorities;

	private final boolean accountNonExpired;

	private final boolean accountNonLocked;

	private final boolean credentialsNonExpired;

	private final boolean enabled;
        		
                
        public User(String username, String password, Collection<? extends GrantedAuthority> authorities) {
		this(username, password, true, true, true, true, authorities);
	}
    
      	...기타 코드들...
}

요런식으로 UserDetails에 정의되어 있던 내용들이 구현되어있었다.

즉 User는 UserDetails를 구현해둔 객체인 것인데,
굳이 UserDetails를 구현한 객체를 직접 만들지 않을 때 사용하는게 User인 것 같다.

추가적으로 로직을 더해서 미 로그인 몇일이면 정지되게 한다던지 등의 경우나 유저의 아이디나 비밀번호 외의 부가적인 정보를 시큐리티를 통해 사용하고 싶을 때에는 직접 UserDetails를 구현한 객체를 사용하면 될 것 같다.

쉽게 말하자면 UserDetails인터페이스, User는 그걸 구현해둔 객체!

profile
모든 것은 직접 경험해보고 테스트하자

0개의 댓글