728x90
반응형
😀 서론
@Secured("ROLES_GUEST")
기존 권한 관리방법은 매직리터럴로 처리가 되어 있었습니다.
이는 오타날 가능성도 있고, 나중에 관리하기도 힘들다는 판단을 하였고, 이를 enum 으로 처리한 과정을 정리해봅니다.
🥸 본론
@Secured 애노테이션의 value는 String[] 를 받도록 정의되어 있기 때문에 enum 값을 받지 못합니다.
그러면 어떻게 해야할까?
@RequiredArgsConstructor
public enum UserGrade {
ADMIN(ROLES.ADMIN, null),
STAFF(ROLES.STAFF, ROLES.ADMIN),
GUEST(ROLES.GUEST, ROLES.STAFF);
private final String roleName;
private final String parentName;
public static class ROLES {
public static final String ADMIN = "ROLE_ADMIN";
public static final String STAFF = "ROLE_STAFF";
public static final String GUEST = "ROLE_GUEST";
private ROLES() {
}
}
}
static inner class와 public static final 을 통해 구현하였습니다.
따로 Utils class 로 값들을 모아둘까도 생각해보았지만,
권한정보를 가지고 있는 enum class 에서 같이 관리하는 게 유지보수 측면에서 장점이 있다고 생각했습니다.
사용
@Secured(ROLES.GUEST)
public ..
@Secured(UserGrade.ROLES.GUEST)
public ..
두 가지 방식 다 사용할 수 있지만, 개인적으로는 두 번째가 길긴 해도 한 번에 알아보기 좋을 것 같습니다.
🤔 결론
별도 Util Class를 만들 수도 있지만, 유지보수를 생각해 enum 안에서 구현하는 방법으로 처리했습니다.
참고
728x90
반응형
'JVM > Spring' 카테고리의 다른 글
[Spring] 통합테스트 환경 분리 설정 - Gradle Kotlin DSL (0) | 2022.06.30 |
---|---|
[Spring] Exception 어떻게 처리할까? (0) | 2022.06.26 |
[Spring] @PropertySource yaml 파일 Load 하는 방법 (0) | 2022.06.16 |
[SPRING] 스프링 MVC 구조? (DispatcherServlet?) (0) | 2022.04.22 |
[SPRING] @Valid @Validated 사용하기 - java bean validation (0) | 2022.03.26 |