【发布时间】:2018-10-18 09:55:12
【问题描述】:
使用this 方法,我在前端(Thymeleaf)方面遇到了一些麻烦。一个例子:
- 用户具有角色
admin(该角色分配有两个权限read和write) - 用户具有角色
user(该角色仅分配有read权限)
在前端,我将保护不同的divs。如果我使用admin 登录:
<li sec:authorize="hasRole('admin')">Entry 1</li>
<li sec:authorize="hasAnyRole('admin', 'user')">Entry 2</li>
什么都不显示,而
<li sec:authorize="hasAuthority('read')">Entry 3</li>
<li sec:authorize="hasAnyAuthority('read', 'write')">Entry 4</li>
完美运行。
现在我使用role 作为我的privileges 的容器,有没有办法允许访问div 以获得“整个”role?我真的必须列出所有privileges吗?还是我在这里混合了一些东西?谢谢。
主要思想是:
-
用户1
with Role 'admin' with Privilege 'read' / 'write' -
用户2
with Role 'user' with Privilege 'read'
在百里香中:
为所有具有管理员角色的用户显示一个 div
<li sec:authorize="hasRole('ROLE_ADMIN')">Entry 1</li>
并显示所有具有写入权限的 div
<li sec:authorize="hasAuthority('READ_PRIVILEGE')">Entry 1</li>
这甚至可能/“要走的路吗?”我的意思是,如果我不能为整个组授予对页面的访问权限,那么将权限分组到一个组(角色)是什么意思?
【问题讨论】:
-
可能是 Spring Security 自动为角色添加了
ROLE_前缀。如果您尝试hasRole('ROLE_ADMIN'),会发生什么? -
hasRole('ROLE_ADMIN')有效..我不知道在数据库中角色的名称也必须是ROLE_ADMIN(因为前缀是自动添加的,我认为它可以处理ADMIN).. -
Spring 4 对此进行了一些更改。见docs.spring.io/spring-security/site/migrate/current/3-to-4/…
标签: spring spring-security thymeleaf