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

时间:2010-03-25 13:18:52

标签: spring spring-security roles

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

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

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

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

1 个答案:

答案 0 :(得分:7)

对于方法安全性,您可以将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>