使用Spring Security在@Secured注释中是否允许多个角色

Pau*_*ire 22 java spring-security

我想允许访问多个用户组的特定方法.是否可以在Spring Security 3.x中使用@Secured注释做这样的事情?考虑两个组(角色)OPERATOR和USER,此代码是否有效:

    @Secured("ROLE_OPERATOR", "ROLE_USER")
    public void doWork() {
        // do useful processing
    }

Don*_*ows 38

你快到了.从语法上讲,你需要像这样写:

@Secured({"ROLE_OPERATOR", "ROLE_USER"})
public void doWork() { ... }
Run Code Online (Sandbox Code Playgroud)

这是因为您要为注释的单个数组属性提供多个值.(Java语法特殊情况下处理单个值,但现在你需要"正确"执行它.)

  • ...具体来说,这是一个(包含)“OR”,对吧?如果您是 ROLE_OPERATOR、_或_ROLE_USER、_或两者兼而有之,您将获得授权。这不是“与”。 (2认同)

10G*_*per 17

@Donal Fellows对Spring应用程序的回答是正确的.但是,如果您在Grails中工作,则需要对列表使用Groovy语法,因此代码看起来像这样

@Secured(["ROLE_OPERATOR", "ROLE_USER"])
public void doWork() { ... }
Run Code Online (Sandbox Code Playgroud)