2011-04-29 3 views
0

URL 수준의 보안이 설정되어 있고 메서드 수준도 있습니다. 하지만 사용자가 url 수준에서 인증되면 내 메서드 수준의 보안이 무시됩니다! 본인은이 쳐다 보면서 그것은 그 다음 URL 수준의 보안을 보인다스프링 보안 3 : 메서드 수준 액세스 실패

intercept-url pattern="/**" access="ROLE_USER"

(코드 아래처럼) 내 메소드 레벨 보안 중 하나를 오버라이드 (override)합니다.

@PreAuthorize("hasRole('ROLE_SUPERVISOR')") 
public String supervisorRoleOnly() 
{ 
    return "success!!!" ; 
} 
나는이 방법은 액세스 거부 오류가 발생,하지만 그들은 이미 URL 수준에서 인증되면 아니, 어떤 ROLE_USER이 방법에 액세스 할 수 있는지 생각

.

security-config.xml이 있나요 :

<global-method-security pre-post-annotations="enabled" > 
    <expression-handler ref="expressionHandler"/> 
</global-method-security> 

을 나는 무엇을 놓치고?

답변

0

나는이 미래의 독자들에게 더 적용 같아요,하지만 당신은 봄 보안에 대한 디버그 로깅을 설정하면 다음과 비슷한 것을 볼 수행

Looking for Pre/Post annotations for method 'supervisorRoleOnly' on target class 'yourClassName' 
No expression annotations found 
Adding security method [CacheKey[yourClassName; public yourReturnType yourClassName.supervisorRoleOnly()]] with attributes [ROLE_USER] 

사전 승인 아마 무시되고있다.