저는 Spring Framework 4.0.0 GA와 Spring Security 3.2.0 GA를 사용하고 있습니다. 다음과 같이 포인트 컷 식을 사용하여 패키지의 모든 클래스의 모든 메서드에 보안을 적용했습니다. 패키지 admin.dao
에 정의 된 모든 클래스의Spring에서 보안 액세스를 재정의하는 방법은 무엇입니까?
<global-method-security secured-annotations="enabled" pre-post-annotations="enabled" proxy-target-class="false">
<protect-pointcut expression="execution(* admin.dao.*.*(..))" access="ROLE_ADMIN"/>
</global-method-security>
모든 방법은 그 권한 ROLE_ADMIN
인 사용자가 액세스 할 수있다.
이 패키지의 일부 클래스의 일부 메소드에서이 보안 제한을 재정의 할 수 있습니까?
이 패키지 (이미 보안되어 있음)의 일부 클래스에있는 일부 메소드에 익명 액세스 권한을 부여해야합니다.
JAAS에서는 해당 방법 위에 위의 javax.annotation.security.PermitAll
주석을 사용하여 전역 제약 조건 (예 : 클래스 수준에 적용되는 제약 조건)을 무시하므로이 작업을 수행 할 수 있습니다.
해당 방법 위에 @Secured(value = "permitAll")
및 @Secured(value = "isAnonymous()")
으로 시도했지만 그 중 아무 것도 작동하지 않았습니다.
+1 pointcut 표현식은 지정한 순서대로 평가됩니다. –
'execute (* admin.dao. *. methodName (..)) '와 같은 포인트 컷 표현식은 의도 한대로 작동하지만'use-expressions'를 사용해도'access' 속성의 값으로'IS_AUTHENTICATED_ANONYMOUSLY'를 사용해야합니다. 와'auto-config'는''와 같이''에서 참으로 설정됩니다. 마찬가지로,'permitAll'은' 와 같은 인터셉터에서 작동합니다. 'permitAll'에 대해 뭔가 빠졌나요? –
Tiny