Как использовать иерархию ролей в Spring Security 3 со Spring EL?

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

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

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

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


person Aleksey Otrubennikov    schedule 25.03.2010    source источник


Ответы (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>
person axtavt    schedule 25.03.2010