UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
95
작성한 질문수 24
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 등록에 관해 질문드립니다
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
20
2
단원별 소스코드
0
54
2
CustomAuthenticationProvider 추가 관련 문의
0
63
2
AOP 의존성 명칭 변경
0
59
1
빈 1개 등록 시 다른 해결 방법
0
61
1
@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?
0
83
2
OIDC의 id token에 담긴 데이터에 대해
0
69
1
loginPage("/loginPage") 질문드립니다.
0
65
1
@EnableWebSecurity
0
142
1
트랜잭션과 롤백
0
96
1
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
0
84
2
AuthenticationManager 사용 방법
0
143
2
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
0
97
2
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
0
186
1
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
0
101
2
메타 주석 질문
0
64
1
동시세션제어 기능에서 로그아웃하기
0
140
3
로그인 후, redirect 에서 error
0
136
3
Session 생성 타이밍에 대한 질문
0
78
2
강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.
0
129
2
customAuthentication 관련
0
123
2
authenticationManagerBuilder 주입받은거 vs 만든 거
0
106
1
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
0
152
2
Bean UserDetailsService
0
85
2





