-
Sneakers Mania - ENUM 타입을 이용한 사용자 권한 처리Projects/Problem & Solution 2021. 12. 31. 23:35
개요
문제점
사용자가 회원가입을 할 때, 사용자의 권한에 대한 속성을 지정할 필요가 있었다. 사용자의 권한은 일반 사용자를 뜻하는 USER, 관리자를 뜻하는 ADMIN이 있다.
단순히 문자열 형태로 설정할 수 있었지만, 개발자가 권한을 설정하는 과정에서 USER, ADMIN 권한 외에 다른 값을 넣을 수도 있다는 위험이 존재했다.
따라서, 사용자 권한에 대해 강제성을 부여할 수 있는 방법이 필요했다.
해결 방안
RoleType이라는 ENUM 타입의 클래스를 생성하고, 해당 클래스의 속성으로 일반 사용자를 뜻하는 USER, 관리자를 뜻하는 ADMIN을 선언하였다.
사용자 권한에 대한 속성을 RoleType으로 지정하고, 해당 권한 값을 강제로 2개만 설정할 수 있게 한다.
이렇게 함으로써, 개발자가 사용자의 권한을 설정할 때 실수를 덜 하게끔 안전성에 중점을 두고 개발을 진행할 수 있었다.
구현 방법
1. RoleType 클래스 생성
public enum RoleType { USER, ADMIN }
ㆍ USER, ADMIN 속성을 가지고 있는 ENUM 타입의 RoleType을 생성한다.
2. User Entity 변경
ㆍ 위 사진에 표시된 것과 같이 사용자 권한에 대한 속성인 "role"의 타입은 RoleType으로 설정한다.
ㆍ 추가로, DB에는 RoleType이라는 것이 없기 때문에 해당 Enum이 String이라는 것을 명시함으로써, DB에 올바르게 저장이 되도록 설정할 필요가 있다.
3.회원가입 로직 변경
ㆍ 위 사진은 회원가입을 수행하는 로직이다.
ㆍ 사용자가 회원가입을 수행할 때 사용자 권한을 의미하는 "role" 속성을 초기화해야 한다.
ㆍ 이때, "role" 속성은 Enum 타입이기 때문에 setRole(RoleType.USER)을 이용해서 초기화를 진행하였다.
GitHub - qlsdud0604/sneakers-mania: 👟 신발 사진을 업로드하고 소통할 수 있는 커뮤니티
👟 신발 사진을 업로드하고 소통할 수 있는 커뮤니티. Contribute to qlsdud0604/sneakers-mania development by creating an account on GitHub.
github.com
728x90'Projects > Problem & Solution' 카테고리의 다른 글
Sneakers Mania - 더티 체킹(Dirty Checking) (0) 2022.01.04 Sneakers Mania - @ControllerAdvice, @ExceptionHandler를 이용한 전역 예외 처리 (0) 2022.01.03 Sneakers Mania - 카카오 로그인(4) (0) 2021.12.28 Sneakers Mania - 카카오 로그인(3) (0) 2021.12.27 Sneakers Mania - 카카오 로그인(2) (0) 2021.12.27