如何让超级用户使用 Spring 安全框架?

How to have a super user using Spring Security Framework?

我正在使用 Spring Security 来控制我网站的权限 application.I 在我的代码中导入了 security 标签,如下所示:
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
然后我使用这样的代码块来控制用户是否可以访问指定的按钮:

<sec:authorize ifAnyGranted="addUser">
     <button type="button">Add User</button>
</sec:authorize>

使用此代码,只有拥有addUser权限的用户才能看到并使用此按钮。

现在我的问题是:我们可以有一个超级用户,即使它没有 addUser 权限,他仍然可以看到这个按钮吗?

不,我认为 Spring 安全性中没有内置此类功能。您可以:

  1. 拥有您在每次授权检查中检查的超级用户角色(权限),或者

  2. 在您的身份验证提供程序或用户详细信息服务中为您的超级用户提供所有可能的权限。

我不太确定这是预期的答案,但 Spring安全性具有角色层次结构的概念。这意味着您可以创建一个超级用户角色并声明它包含 addUser 权限(以及其他权限)。

这样,任何拥有 superUser 权限的用户(以及其他权限)都会看到您的按钮

参考资料:来自 Spring 安全参考手册中的 Hierarchical Roles,您可以编写类似

的内容

<bean id="roleHierarchy"
        class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl">
    <property name="hierarchy">
        <value>
            ROLE_SUPER_USER > ROLE_ADD_USER
        </value>
    </property>
</bean>

似乎缺少要求,因此我在 Spring 安全存储库中创建了一个问题:

https://github.com/spring-guides/top-spring-security-architecture/issues/5