Ich denke, es wäre besser, Springs hierarchical roles zu verwenden. Auf diese Weise können Sie konfigurieren, dass alle ROLE_ADMIN_L1 ... auch ROLE_ADMIN sind.
Beispiel aus der Dokumentation
<bean id="roleVoter" class="org.springframework.security.access.vote.RoleHierarchyVoter">
<constructor-arg ref="roleHierarchy" />
</bean>
<bean id="roleHierarchy"
class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl">
<property name="hierarchy">
<value>
ROLE_ADMIN > ROLE_STAFF
ROLE_STAFF > ROLE_USER
ROLE_USER > ROLE_GUEST
</value>
</property>
</bean>
ROLE_ADMIN ⇒ ROLE_STAFF ⇒ ROLE_USER ⇒ ROLE_GUEST
So würden Sie so etwas wie dies benötigen:
<property name="hierarchy">
<value>
ROLE_ADMIN_L1 > ROLE_ADMIN
ROLE_ADMIN_L2 > ROLE_ADMIN
ROLE_ADMIN_L3 > ROLE_ADMIN
</value>
</property>
und verwenden @PreAuthroize("hasRole('ADMIN')")
Das ist nicht was ich will. ROLE_ADMIN hat globale Autorität. ROLE_ADMIN_XXX hat verschiedene Teilmengen der APIs, die ROLE_ADMIN aufrufen kann. Ich bin auf der Suche nach der einfachen Lösung auf @ PreAuthroize ("hasAnyAuthority ('')) Annotation, anstatt eine Anzahl von ROLE_ADMIN_XXX in der Annotation –
AFAIK, was Sie wollen, ist nicht möglich mit den integrierten Tools von Spring, die Sie sehen können die Implementierung für 'hasAnyAuthority' [hier] [https://github.com/spring-projects/spring-security/blob/ce20cfcb9803a6175f6befc9008cadcc4e3b6d72/core/src/main/java/org/springframework/security/access/expression/SecurityExpressionRoot. Java], es enthält eine einfache enthält auf einer Reihe von Rollen. –