如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?

Posted

技术标签:

【中文标题】如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?【英文标题】:How to use role-hierarchy in Spring Security 3 with Spring EL? 【发布时间】:2011-01-31 17:28:52 【问题描述】:

我想在 Spring Security 的服务方法上使用 @PreAuthorize 注释。要求之一是使用角色层次结构。但默认情况下是不启用的。

我发现在 SecurityExpressionRoot 类(“表达式根对象的基类”)中有一个属性 roleHierarchy。 该类实际上确实将这个属性用于类似的方法hasRole()hasAnyRole()

我想如果我为它提供我自己的 RoleHierarchy bean,我将能够使用带有分层角色的 @PreAuthorize 注释。

如何将我的层次结构 bean 注入 SecurityExpressionRoot

【问题讨论】:

【参考方案1】:

为了方法安全,您可以将RoleHierarchy 设置为DefaultMethodSecurityExpressionHandler 的属性,如下所示:

<global-method-security ...>
    <expression-handler ref = "methodSecurityExpressionHandler" />
</global-method-security>

<beans:bean id = "methodSecurityExpressionHandler" 
    class = "org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
    <beans:property name = "roleHierarchy" .../>
</beans:bean>

【讨论】:

以上是关于如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?的主要内容,如果未能解决你的问题,请参考以下文章