@Annotaion Book

@PreAuthorize

파지티브헌 2023. 2. 24. 11:31

@PreAuthorize 어노테이션은 Spring Security에서 사용되며, 메서드 또는 클래스 단위의 인가(authorization) 설정을 지정하는 데 사용됩니다. @PreAuthorize 어노테이션은 해당 메서드 또는 클래스에 접근하기 전에 특정 권한을 가진 사용자만 접근할 수 있도록 제한합니다.

@PreAuthorize 어노테이션은 SpEL(Spring Expression Language)을 사용하여 권한 검사를 수행합니다. SpEL은 Java 기반의 표현 언어로, Spring Security에서는 메서드 파라미터, 메서드 반환 값 등을 기반으로 권한 검사를 수행할 수 있도록 지원합니다.

아래는 @PreAuthorize 어노테이션을 사용한 예시 코드입니다.

@PreAuthorize("hasRole('ROLE_ADMIN')")
@PostMapping("/users")
public User addUser(@RequestBody User user) {
    userService.addUser(user);
    return user;
}

위 코드에서는 @PreAuthorize 어노테이션을 사용하여 addUser() 메서드에 대한 권한 검사를 수행하고 있습니다. @PreAuthorize 어노테이션의 파라미터로는 SpEL 표현식을 작성합니다. 위 코드에서는 hasRole() 메서드를 사용하여 현재 인증된 사용자가 ROLE_ADMIN 권한을 가지고 있는지 검사하고 있습니다. ROLE_ADMIN 권한을 가진 사용자만 addUser() 메서드를 호출할 수 있도록 제한하고 있습니다.

@PreAuthorize 어노테이션은 @PostAuthorize 어노테이션과 함께 사용될 수도 있습니다. @PostAuthorize 어노테이션은 메서드 실행 후 검사를 수행하며, 메서드 실행 결과를 기반으로 권한 검사를 수행합니다. @PreAuthorize 어노테이션과 @PostAuthorize 어노테이션을 조합하여 세밀하게 권한 검사를 수행할 수 있습니다.