2010-03-25 3 views
4

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

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

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

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

ответ

7

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

Спасибо большое, этот подход работал для меня –

Смежные вопросы