lottie
Seungjun's blog
blog
@PreAuthorize

@PreAuthorize 어노테이션

@PreAuthorize 어노테이션은 Spring Security에서 제공하는 어노테이션 중 하나로, 메소드나 클래스에 보안 권한을 설정할 때 사용됩니다.

이 어노테이션은 메소드 호출 전에 먼저 사용자의 권한을 확인하며, 해당 권한이 없으면 메소드 호출이 거부됩니다.


일반적으로 @PreAuthorize 어노테이션은 Spring EL(Spring Expression Language)을 사용하여 권한 검사를 정의합니다. Spring EL을 사용하면 메소드 파라미터, 메소드 리턴 값, 빈 등에 대한 조건을 설정할 수 있습니다.


예제 코드 :


import org.springframework.security.access.prepost.PreAuthorize;

public class MyService {

    @PreAuthorize("hasRole('ROLE_USER')")
    public void userOnlyMethod() {
        // 이 메소드는 ROLE_USER 권한이 있는 사용자만 호출 가능
    }

    @PreAuthorize("hasAnyRole('ROLE_ADMIN', 'ROLE_SUPERADMIN')")
    public void adminOnlyMethod() {
        // 이 메소드는 ROLE_ADMIN 또는 ROLE_SUPERADMIN 권한이 있는 사용자만 호출 가능
    }
}

위의 예제에서 @PreAuthorize 어노테이션은 각 메소드에 대해 특정한 권한을 검사하고 있습니다. 예를 들어, userOnlyMethod()는 ROLE_USER 권한을 가진 사용자만 호출할 수 있고, adminOnlyMethod()는 ROLE_ADMIN 또는 ROLE_SUPERADMIN 권한을 가진 사용자만 호출할 수 있습니다.


@PreAuthorize 어노테이션은 메소드 뿐만 아니라 클래스에도 적용할 수 있으며, 클래스에 적용할 경우 해당 클래스의 모든 메소드에 적용된 권한 검사가 적용됩니다.