2010-03-25 89 views
4

我想在Spring Security的服务方法上使用@PreAuthorize注解。其中一个要求是使用角色层次结构。但默认情况下,它未启用。如何在Spring Security中使用Spring EL中的角色层次?

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

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

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

回答

7

对于方法安全,你可以设置RoleHierarchyDefaultMethodSecurityExpressionHandler属性,是这样的:

<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> 
+0

非常感谢,这种方式为我工作 – 2010-03-25 14:08:43

相关问题