How to use role-hierarchy in Spring Security 3 with Spring EL?

你说的曾经没有我的故事 提交于 2019-12-21 19:45:34

问题


I want to use @PreAuthorize annotation on service methods with Spring Security. One of requirements is to use role-hierarchy. But by default it is not enabled.

I found that in SecurityExpressionRoot class ("the base class for expression root objects") there is a property roleHierarchy. The class actually does use this property for methods like hasRole() and hasAnyRole().

I suppose that if I supply it with my own RoleHierarchy bean I will be able to use @PreAuthorize annotations with hierarchical roles.

How can I inject my hierarchy bean into SecurityExpressionRoot?


回答1:


For method security you can set RoleHierarchy as a property of DefaultMethodSecurityExpressionHandler, something like this:

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


来源:https://stackoverflow.com/questions/2515789/how-to-use-role-hierarchy-in-spring-security-3-with-spring-el

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!