[SPRING SECURITY] User의 권한 정보를 데이터베이스에서 관리하기

승 아·2023년 8월 6일

User의 권한 정보를 데이터베이스에서 관리하기 위한 단계

  1. User의 권한 정보를 저장하기 위한 테이블 생성
  • Member entity에 추가
	@ElementCollection(fetch = FetchType.EAGER)
    private List<String> roles = new ArrayList<>();

	/* List, Set 같은 컬렉션 타입의 필드는 @ElementCollection 애너테이션을 추가하면 
	User 권한 정보와 관련된 별도의 엔티티 클래스를 생성하지 않아도 간단하게 매핑 처리됨 */
  1. 회원 가입 시, User의 권한 정보(Role)를 데이터베이스에 저장
  • MEMBER_ROLES 테이블에 저장
  • MemberService에 추가
List<String> roles = authorityUtils.createRoles(member.getEmail());
member.setRoles(roles);

// authorityUtils.createRoles(member.getEmail());를 통해 
// 회원의 권한 정보(List<String> roles)를 생성한 뒤 member 객체에 넘겨줌
- 파라미터로 전달된 이메일 주소가 application.yml 파일의 mail.address.admin 프로퍼티에 정의된 
이메일 주소와 동일하면 관리자 Role 목록(ADMIN_ROLES_STRING)을 리턴하고, 그 외에는 
일반 사용자 Role 목록(USER_ROLES_STRING)을 리턴
  1. 로그인 인증 시, User의 권한 정보를 데이터베이스에서 조회
profile
개발 공부를 기록하는 공간

0개의 댓글