Spring Security 3:方法级访问失败

时间:2011-04-29 18:13:39

标签: spring-security

我有放置的url级安全性,以及方法级别。但是,一旦用户在网址级别进行了身份验证,我的方法级别安全性就会被绕过!我进一步看了这个,似乎是以下网址级别的安全性:

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

会覆盖我的任何方法级安全性(如下面的代码段)。

@PreAuthorize("hasRole('ROLE_SUPERVISOR')")
public String supervisorRoleOnly() 
{ 
     return "success!!!" ;
}

我认为这种方法会抛出一个拒绝访问的错误,但是没有,任何ROLE_USER都可以在url级别进行身份验证后访问此方法。

我在security-config.xml

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

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我想这对未来的读者更有用,但是当您为Spring Security设置调试日志时,您会看到类似于以下内容的内容:

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]

PreAuthorize可能被忽略了。