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

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

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

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

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

解决方法:

对于方法安全性,您可以将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>
上一篇:ansible远程编译部署httpd和php


下一篇:Bootstrap系列 -- 34. 按钮下拉菜单