@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에서 별도의 권한 체크 없이 손쉽게 권한을 체크하여 메소드 접근을 제어할 수 있어 정말 가독성도 좋아짐!👍🏻