@PreAuthorize 권한 체크

Jisu_M·2024년 11월 18일

@PreAuthorize란?

@PreAuthorize는 Spring Security에서 제공하는 Annotation으로, 메서드 실행 전에 권한 기반 접근 제어를 수행합니다.

권한(Role) 또는 특정 조건(SpEL)을 사용해 접근을 제한할 수 있으며
권한 확인이 실패하면 해당 메서드는 호출되지 않습니다.

@PreAuthorize를 사용하는 이유

  • 코드의 간결성: 권한 검증 로직을 메서드에 직접 작성할 필요 없이 간단한 애노테이션으로 처리 가능.
  • 보안 강화: 모든 요청에 대해 사전에 권한을 확인하므로, 무단 접근을 방지할 수 있음.
  • 유지보수성: 보안 규칙을 메서드 수준에서 선언적으로 관리할 수 있어, 정책 변경 시 간편하게 수정 가능.

따라서, 기존 service에서 권한을 체크하는 대신 Controller Method에 선언하여 권한을 사전 체크 하기로!

@PreAuthorize 적용

@PostMapping("/orders")
@PreAuthorize("hasAnyAuthority('ROLE_MANAGER', 'ROLE_OWNER', 'ROLE_USER')")
public OrderResponseDto createOrder(
        @Valid @RequestBody OrderRequestDto request,
        @AuthenticationPrincipal UserDetailsImpl userDetails) {

    return orderService.createOrder(request, userDetails.getUser().getId());
}

이처럼 @PreAuthorize는 권한 관리와 접근 제어를 단순화하며, Spring Application의 보안을 강화하는 데 중요한 역할을 합니다.

Service에서 별도의 권한 체크 없이 손쉽게 권한을 체크하여 메소드 접근을 제어할 수 있어 정말 가독성도 좋아짐!👍🏻

profile
개발 여정을 기록하며 성장하는 매일

0개의 댓글