我正在使用Spring 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权限,他仍然可以看到此按钮?
答案 0 :(得分:0)
不,我不认为Spring Security中内置了这样的功能。你可以:
拥有您在每次授权检查中检查的超级用户角色(权限),或
为您的超级用户提供身份验证提供程序或用户详细信息服务中的所有权限。
答案 1 :(得分:0)
我不确定这是预期的答案,但SpringSecurity有一个角色层次的概念。这意味着您可以创建一个超级用户角色并声明它包含addUser
权限(以及其他)。
这样,具有superUser
权限的任何用户(以及其他权限)都会看到您的按钮
参考:从Spring Security参考手册中的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>
答案 2 :(得分:0)
这似乎是一个缺失的要求,因此我在Spring Security存储库中创建了一个问题:
https://github.com/spring-guides/top-spring-security-architecture/issues/5