2014-04-19 2 views
0

저는 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()")으로 시도했지만 그 중 아무 것도 작동하지 않았습니다.

답변

2

는 다음과 같은 시도 :

<global-method-security secured-annotations="enabled" pre-post-annotations="enabled" proxy-target-class="false"> 
    <protect-pointcut expression="execution(* admin.your.permit.all.dao.*.*(..))" 
      access="permitAll"/> 
    <protect-pointcut expression="execution(* admin.dao.*.*(..))" access="ROLE_ADMIN"/> 
</global-method-security> 

가 중요한이 경우 순서에 따라 먼저 protect-pointcut permitAll 항목을 넣어해야합니다.

+0

+1 pointcut 표현식은 지정한 순서대로 평가됩니다. –

+0

'execute (* admin.dao. *. methodName (..)) '와 같은 포인트 컷 표현식은 의도 한대로 작동하지만'use-expressions'를 사용해도'access' 속성의 값으로'IS_AUTHENTICATED_ANONYMOUSLY'를 사용해야합니다. 와'auto-config'는''와 같이''에서 참으로 설정됩니다. 마찬가지로,'permitAll'은'와 같은 인터셉터에서 작동합니다. 'permitAll'에 대해 뭔가 빠졌나요? – Tiny

관련 문제