인프런 커뮤니티 질문&답변

buo642g님의 프로필 이미지

작성한 질문수

스프링 시큐리티 OAuth2

GrantedAuthority, JPA

해결된 질문

작성

·

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 로 인증을 받든 동일한 권한이 적용되도록 구성하시면 될 것 같습니다.

buo642g님의 프로필 이미지

작성한 질문수

질문하기