2010-03-25 5 views
4

Je souhaite utiliser l'annotation @PreAuthorize sur les méthodes de service avec Spring Security. L'une des exigences est d'utiliser la hiérarchie des rôles. Mais par défaut, il n'est pas activé.Comment utiliser la hiérarchie des rôles dans Spring Security 3 avec Spring EL?

J'ai trouvé que dans SecurityExpressionRoot class ("la classe de base pour les objets racine d'expression"), il existe une propriété roleHierarchy. La classe utilise réellement cette propriété pour des méthodes telles que hasRole() et hasAnyRole().

Je suppose que si je le fournisse avec mon propre haricot RoleHierarchy, je pourrai utiliser des annotations @PreAuthorize avec des rôles hiérarchiques.

Comment puis-je injecter mon grain de hiérarchie dans SecurityExpressionRoot?

Répondre

7

Pour plus de sécurité de la méthode que vous pouvez définir RoleHierarchy comme propriété de DefaultMethodSecurityExpressionHandler, quelque chose comme ceci:

<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

Merci beaucoup, cette approche a fonctionné pour moi –

Questions connexes