해결된 질문
작성
·
183
1
현재 강의 내용을 따라 소셜 로그인을 구현한 후 JPA 를 도입하려합니다.
폼 로그인에 사용되는 User 클래스를 엔티티로 만들려면 아래 필드의 타입도 바꾸어야 할 것 같은데,
public class User {
...
private List<? extends GrantedAuthority> authorities;
위와 같은 타입을 일반 User도 사용할 필요가 있나요?
DB에 저장하기 위해, User 는 ProviderUser 와 별개의 사용자 정의 권한 객체를 가져도 상관없나요?
답변 1
1
네
User 엔터티에 바로 List<? extends GrantedAuthority> authorities 를 주기보다는 별도의 Role 엔터티를 만들고 Role 엔터티에 List<? extends GrantedAuthority> authorities 를 주는 것이 좋을 것 같습니다.
그리고 User 와 Role 은 1:N 으로 연관관계를 구성하시면 될 것 같습니다.
ProviderUser 는 폼 로그인과 OAuth2 로그인 두가지 모두의 사용자 인증 결과를 동일한 타입으로 이루어지도록 추상화한 개념이기 때문에 권한 체계도 통합되도록 구성하시는 것이 좋습니다.
그래서 폼 로그인으로 인증을 받든 OAuth2 로 인증을 받든 동일한 권한이 적용되도록 구성하시면 될 것 같습니다.