Role 체크 어노테이션 만들기 1

슈퍼콜라·2025년 7월 25일
0

스프링에서 권한 체크를 좀 더 깔끔하게 하고 싶어서,
어노테이션으로 역할(Role)을 체크하는 방식으로 만들어봤다.

  1. 어노테이션 정의하기
    먼저 커스텀 어노테이션을 만든다. 클래스나 메서드에 붙일 수 있도록 @Target을 지정해주고, 런타임 시점에 리플렉션으로 읽을 수 있게 @Retention(RetentionPolicy.RUNTIME)도 넣어준다.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckRole {
    String value();
}

@Target → 클래스, 메서드 둘 다 타겟 가능

@Retention(RetentionPolicy.RUNTIME) → 어노테이션 정보를 런타임에도 유지
왜 필요하냐면, 나중에 AOP로 이 어노테이션을 읽어서 권한 체크를 할 건데
이게 런타임에 메모리에 있어야 리플렉션으로 읽을 수 있다. 만약 이걸 안 쓰면 컴파일 후 .class 파일엔 남아있지만, 실행 중엔 JVM이 이 정보를 못 읽는다.

  1. 사용 예시
    이제 컨트롤러나 서비스 같은 데에 이렇게 붙여주면 된다

ex)

@CheckRole("ROLE_ADMIN")
@GetMapping("/admin")
public String adminOnlyApi() {
    return "관리자 전용 API입니다.";
}

@CheckRole("ROLE_SUPER")
@RequestMapping("/api/admin")
@RestController
public class AdminController {
}

다음 단계: RoleCheckAspect
이제 어노테이션은 준비됐고, 진짜 핵심인 AOP 구현만 남았다.
RoleCheckAspect를 만들어서, 메서드 실행 전에 권한 체크 로직을 태우면 된다.

이 부분은 다음 글에서...

profile
공부하는거 정리

0개의 댓글