我试图在Spring安全性中实现Hierarchical角色,并根据spring源文档在我的xml文件中添加了以下配置.
<bean id="roleHierarchy" class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl">
<property name="hierarchy">
<value>
ROLE_ADMIN > ROLE_PRO
ROLE_PRO > ROLE_PREMIUM
ROLE_PREMIUM > ROLE_BASIC
ROLE_BASIC > ROLE_ANONYMOUS
</value>
</property>
</bean>
<bean id="roleVoter"
class="org.springframework.security.access.vote.RoleHierarchyVoter">
<constructor-arg ref="roleHierarchy"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
我已尝试使用上面的行但我得到访问拒绝,而ROLE_ADMIN尝试访问分配给ROLE_BASIC的URL.我是否需要添加更多内容.我在Spring网站上找到了除了那些行之外的其他内容.另外,如果您知道Hierarchical角色的任何良好实现,请提及它们.
我想在Spring Security的服务方法上使用@PreAuthorize注释.要求之一是使用角色层次结构.但默认情况下,它未启用.
我发现在SecurityExpressionRoot类("表达式根对象的基类")中有一个属性roleHierarchy.该类实际上将此属性用于hasRole()和hasAnyRole()等方法.
我想如果我用自己的RoleHierarchy bean 提供它,我将能够使用带有分层角色的@PreAuthorize注释.
如何将我的层次结构bean注入SecurityExpressionRoot?