【问题标题】:Spring Security 3: Method Level Access FailureSpring Security 3:方法级访问失败
【发布时间】:2011-07-11 23:03:30
【问题描述】:

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

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

将覆盖我的任何方法级别的安全性(例如下面的代码 sn-p)。

@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>

我错过了什么?

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    我想这更适用于未来的读者,但是当您为 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 可能被忽略了。

    【讨论】:

      猜你喜欢
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 2014-06-19
      • 2014-10-02
      • 2012-11-21
      • 2016-08-12
      • 2016-08-23
      相关资源
      最近更新 更多