0

我的应用程序中有一个自定义(合成)用户角色来限制用户活动。我们使用@Secured() 并在我们应用程序的许多部分中使用合成用户角色。

问题是我需要检查登录用户是否具有此合成角色以执行某些操作。我尝试使用 HttpServletRequest 的 isUserInRole(),但是如果使用他的原始角色检查用户角色而不使用合成/授予角色检查,则此方法返回 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 角色。谢谢。

4

0 回答 0