我的应用中有自定义(合成)用户角色来限制用户活动。我们在合成用户角色的应用程序的许多部分使用@Secured()。
问题是我需要检查登录用户是否具有此合成角色才能执行某些操作。 我尝试使用HttpServletRequest的isUserInRole(),但是如果使用其原始角色检查用户角色,则此方法返回true,而使用synthetic / granted角色则不返回true。 我也尝试过使用RoleHierarchy.getReachableGrantedAuthorities()但我的经理要我在更高级别上做。 SecurityContextHolder中的getAuthorities也只返回用户的原始角色,而不是他授予的授权角色。
安全上下文文件包含
<bean id="roleHierarchy"
class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl"
xmlns="http://www.springframework.org/schema/beans">
<property name="hierarchy">
<value>
ROLE_SysAdmin > ROLE_UserPassowrdResetInfoManager
ROLE_FacilityGroupAdmin > ROLE_UserPassowrdResetInfoManager
</value>
</property>
</bean>
ROLE_SysAdmin是用户的原始角色,ROLE_UserPassowrdResetInfoManager是授予的角色。 我的问题类似于这个问题Spring Security: User Authorization in Java Class,除了我需要为用户检查synthetic.granted角色。 感谢。