如何在方法内的授权权限中检查用户角色

时间:2013-04-02 08:17:02

标签: java spring spring-security

我的应用中有自定义(合成)用户角色来限制用户活动。我们在合成用户角色的应用程序的许多部分使用@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角色。 感谢。

0 个答案:

没有答案