要避免這種情況,請創建父角色ALL_ADMINS,並設置彈簧安全層級角色,請參閱documentation以瞭解更多詳細信息。
創建與配置的角色層次結構中的角色選民:
<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_ALL_ADMINS > ROLE_ADMIN
ROLE_ALL_ADMINS > ROLE_SUPERADMIN
...
</value>
</property>
</bean>
然後把它應用到自定義訪問決策管理:
<beans:bean id="accessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased">
<beans:property name="decisionVoters">
<beans:list>
<beans:bean ref="roleVoter" />
<beans:bean class="org.springframework.security.access.vote.AuthenticatedVoter"/>
</beans:list>
</beans:property>
</beans:bean>
和持續配置自定義訪問決策管理器通過使用@Secured
:
<global-method-security access-decision-manager-ref="accessDecisionManager">
...
</global-method-security>