복붙노트

[SPRING] @Secured annotation에 'or'조건을 가진 여러 역할이 Spring Security에 허용되어 있습니까?

SPRING

@Secured annotation에 'or'조건을 가진 여러 역할이 Spring Security에 허용되어 있습니까?

내 프로젝트에서 봄과 봄 보안 4를 사용하고 있습니다. ROLE_USER 또는 ROLE_TIMER_TASK를 사용하여 DAO 메서드를 호출해야합니다.

현재이 주석을 사용하고 있습니다.

 @Secured({"ROLE_USER", "ROLE_TIMER_TASK"})

이 @Secured 주석은 두 가지 역할을 모두 가진 사용자 만 허용하지만이 역할을 가진 사용자가이 메서드를 호출하고 싶습니다.

사용자가이 역할 중 하나의 역할을 가지고이 방법을 호출 할 수 있습니까?

해결법

  1. ==============================

    1.또는의 경우 @PreAuthorize 주석을 대신 사용하십시오.

    또는의 경우 @PreAuthorize 주석을 대신 사용하십시오.

    @PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_TIMER_TASK')")
    

    스프링 보안 버전 4에서는 ROLE_ 접두어를 생략 할 수 있습니다.

    @PreAuthorize("hasRole('USER') or hasRole('TIMER_TASK')")
    

    보안 설정에서 사전 및 사후 주석을 사용하도록 설정하십시오.

  2. ==============================

    2.언급 된 역할 중 하나를 사용하여 메소드를 호출하려면 다음을 사용하십시오.

    언급 된 역할 중 하나를 사용하여 메소드를 호출하려면 다음을 사용하십시오.

    @PreAuthorize("hasAnyRole('ROLE_USER','ROLE_TIMER_TASK')")
    

    보안 클래스에서 사전 및 사후 주석을 활성화합니다. 클래스 :

    @EnableGlobalMethodSecurity(prePostEnabled = true)
    
  3. ==============================

    3.holmis83 ....에 의한 이전 답변 외에도

    holmis83 ....에 의한 이전 답변 외에도

    메소드 보안을 위해 사전 및 사후 주석을 사용하려면 다음을 수행하십시오.

    Java 구성 :

    @EnableGlobalMethodSecurity(prePostEnabled = true)
    public class MethodSecurityConfig {
    // ...
    }
    

    XML 구성 :

    <global-method-security pre-post-annotations="enabled"/>
    
  4. from https://stackoverflow.com/questions/36892152/are-multiple-roles-allowed-in-the-secured-annotation-with-or-condition-in-spr by cc-by-sa and MIT license