如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?
Posted
技术标签:
【中文标题】如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?【英文标题】:How to use role-hierarchy in Spring Security 3 with Spring EL? 【发布时间】:2011-01-31 17:28:52 【问题描述】:我想在 Spring Security 的服务方法上使用 @PreAuthorize 注释。要求之一是使用角色层次结构。但默认情况下是不启用的。
我发现在 SecurityExpressionRoot 类(“表达式根对象的基类”)中有一个属性 roleHierarchy。 该类实际上确实将这个属性用于类似的方法hasRole() 和 hasAnyRole()。
我想如果我为它提供我自己的 RoleHierarchy bean,我将能够使用带有分层角色的 @PreAuthorize 注释。
如何将我的层次结构 bean 注入 SecurityExpressionRoot?
【问题讨论】:
【参考方案1】:为了方法安全,您可以将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>
【讨论】:
以上是关于如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security 拦截 URL 究竟是如何工作的?
如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?
如何使用 Spring-Security 3 和 Hibernate 4 将 spring security xml 配置 hibernate 转换为 java config
spring-security saml2:如何获取当前用户?
如何使用 grails 1.3.2 和插件 spring-security-core 1 实现自定义 FilterSecurityInterceptor?