使用 Spring Security 的 @Secured 注释中是不是允许多个角色
Posted
技术标签:
【中文标题】使用 Spring Security 的 @Secured 注释中是不是允许多个角色【英文标题】:Are multiple roles allowed in the @Secured annotation with Spring Security使用 Spring Security 的 @Secured 注释中是否允许多个角色 【发布时间】:2011-12-16 14:49:53 【问题描述】:我想允许多个用户组访问特定方法。在 Spring Security 3.x 中是否可以使用 @Secured 注释来做这样的事情?考虑两组(角色)操作员和用户,此代码是否有效:
@Secured("ROLE_OPERATOR", "ROLE_USER")
public void doWork()
// do useful processing
【问题讨论】:
【参考方案1】:你快到了。从语法上讲,你需要这样写:
@Secured("ROLE_OPERATOR", "ROLE_USER")
public void doWork() ...
这是因为您为注解的单个数组属性提供了多个值。 (Java 在语法上是处理单个值的特殊情况,但现在您需要“正确地”这样做。)
【讨论】:
... 具体来说,这是一个(包括)OR
,对吧?如果您是 ROLE_OPERATOR、或 ROLE_USER、或两者,您将获得授权。这不是AND
。【参考方案2】:
@Donal Fellows 的回答对于 Spring 应用程序是正确的。但是,如果您在 Grails 中工作,则需要对列表使用 Groovy 语法,以便代码如下所示
@Secured(["ROLE_OPERATOR", "ROLE_USER"])
public void doWork() ...
【讨论】:
人真棒以上是关于使用 Spring Security 的 @Secured 注释中是不是允许多个角色的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Security thymeleaf sec 中使用列表:授权标签
sec:authorize 对 Spring Security 不起作用
Spring Security Role Hierarchy 不适用于 Thymeleaf sec:authorize
<sec:authorize ifAnyGranted 或 ifAnyGranted 在 SPRING SECURITY 中不起作用