작성
·
21
0
UserDetailsService()을 커스텀으로 만든 후에 UserDetail이 아닌 타입을 반환할 수 있나요?
아니면 UserDetail의 멤버변수들 뿐 아니라 더욱 많은 멤버 변수들을 추가해서 사용해도 문제가 없나요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
Jin님, 질문 주셔서 감사합니다. Spring Security에서 제공하는 UserDetailsService
의 주요 역할은 사용자 인증에 필요한 사용자 정보를 UserDetails
타입으로 반환하는 것입니다. 그렇기 때문에 UserDetailsService
의 loadUserByUsername
메서드는 반드시 UserDetails
타입의 객체를 반환해야 합니다.
그렇지만, UserDetails
인터페이스를 구현하는 커스텀 클래스를 만들어서 필요한 멤버 변수를 추가하는 것은 가능합니다. 이렇게 하면 추가적인 정보를 UserDetails
객체에 포함시킬 수 있으며, 인증 및 권한 검증에서 이 추가 정보를 활용할 수 있습니다.
아래와 같은 방식으로 UserDetails
를 커스터마이즈할 수 있습니다:
public class CustomUserDetails implements UserDetails {
// UserDetails 필수 멤버
private String username;
private String password;
private Collection<? extends GrantedAuthority> authorities;
// 추가 멤버 변수
private String firstName;
private String lastName;
// 필수 메서드 구현
@Override
public String getUsername() {
return username;
}
@Override
public String getPassword() {
return password;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
// ... 기타 UserDetails 메서드 구현 ...
// 추가 메서드
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
이렇게 UserDetails
를 구현한 클래스에서 추가 정보를 사용할 수 있으며, 이는 시스템 전반의 인증 프로세스에서도 사용 가능합니다.
관련된 질문들의 일부 링크는 다음과 같습니다:
- UserDetailsService에 대해 질문이 있습니다
- spring boot 2.7버전에서 customUserDetailsServce 등록에 관해 질문드립니다
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.