Как использовать иерархию ролей в Spring Security 3 с Spring EL? - PullRequest
4 голосов
/ 25 марта 2010

Я хочу использовать аннотацию @PreAuthorize для методов обслуживания в Spring Security. Одним из требований является использование ролевой иерархии. Но по умолчанию он не включен.

Я обнаружил, что в SecurityExpressionRoot классе («базовый класс для корневых объектов выражений») есть свойство roleHierarchy. Класс на самом деле использует это свойство для таких методов, как hasRole () и hasAnyRole () .

Полагаю, что если я снабду его своим собственным RoleHierarchy компонентом, я смогу использовать аннотации @PreAuthorize с иерархическими ролями.

Как я могу внедрить мой компонент иерархии в SecurityExpressionRoot ?

1 Ответ

7 голосов
/ 25 марта 2010

Для безопасности метода вы можете установить 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>
...