Spring security 如何使用Spring Security设置管理员/超级用户角色以具有完全访问权限?
我想根据角色限制对目录的访问,例如:Spring security 如何使用Spring Security设置管理员/超级用户角色以具有完全访问权限?,spring-security,Spring Security,我想根据角色限制对目录的访问,例如: <intercept-url pattern="/foo/**" access="hasRole('ROLE_FOO')"/> <intercept-url pattern="/bar/**" access="hasRole('ROLE_BAR')"/> 但我还需要一个超级用户角色,可以访问所有内容,例如: <intercept-url pattern="/**" access="hasRole('ROLE_SUPERUSER
<intercept-url pattern="/foo/**" access="hasRole('ROLE_FOO')"/>
<intercept-url pattern="/bar/**" access="hasRole('ROLE_BAR')"/>
但我还需要一个超级用户角色,可以访问所有内容,例如:
<intercept-url pattern="/**" access="hasRole('ROLE_SUPERUSER')"/>
除了始终使用hasAnyRole之外,还有其他方法可以实现这一点吗?e、 g
<!-- This seems ugly, with all the repeated references. OTOH, it's explicit -->
<intercept-url pattern="/foo/**" access="hasAnyRole('ROLE_FOO', 'ROLE_SUPERUSER')"/>
<intercept-url pattern="/bar/**" access="hasRole('ROLE_BAR') or hasRole('ROLE_SUPERUSER')"/>
这看起来像是一个案例
虽然我找不到一个好方法来配置它。也许这种粗略的方法会奏效:
public class RoleHierarchyInjectionBeanPostProcessor implements BeanPostProcessor {
public Object postProcessAfterInitialization(Object bean, String beanName) {
if (bean instanceof DefaultWebSecurityExpressionHandler) {
((DefaultWebSecurityExpressionHandler) bean).setRoleHierarchy(...);
}
return bean;
}
...
}
事实上,类似的问题有一个解决方案。您可以忽略关于JMX的部分,对您来说重要的是关于AccessDecisionManager和AccessDecisionVoter的讨论。其思想是注册一个定制的AccessDecisionVoter,实现if超级用户授权访问;逻辑