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

Ale*_*kov 4 spring roles spring-security

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

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

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

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

axt*_*avt 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>
Run Code Online (Sandbox Code Playgroud)