我正在建立系统并试图在选民和ACL之间做出决定.我需要实现的是应该有不同角色的用户访问对象属性,例如:经过身份验证的常规用户可以看到Post及其内容,但不能看到它的"Position"属性,而具有编辑角色的用户也可以看到Post和它的内容,并有权看到"位置"属性并进行编辑.我可以通过单独使用选民来实现此功能,还是需要使用ACL?
对于令人困惑的问题我很抱歉,我是symfony的新手并且还不太了解这些概念.我想要实现的是对象字段级别的权限.

普通用户可以访问"TITLE"和"CONTENT"属性,并修改"CONTENT"属性",主持人可以查看和编辑以前的两个属性,管理员应该可以访问所有对象属性,并对它们执行任何操作.
Waa*_*als 12
文档仅解释了如何检查对象的访问而不是属性.我将解释我在选民或ACL之间做出的决定.接下来我将解释你如何使用(Hierachy)选民来实现你的目标.
当用户只是根据角色访问或不访问对象时,可以使用防火墙执行访问,这是最简单的解决方案.
但是,当访问依赖于某些规则下的每个对象时,应该使用选民.例如,用户只能在创建帖子时对其进行编辑.但是主持人应该始终干练地编辑帖子.
最困难的访问控制是当用户可以被其他用户授予访问权限时.例如,管理员可以将用户分配给帖子并授予他们编辑权限.这是一种解决方案,其中无法仅基于用户的角色来决定访问.需要为每个用户存储对象的访问/权限.这就是ACL的作用.它为每个用户存储数据库中对象的权限.
至于你的问题.大多数情况下,这些用途都是在代码本身中处理的.我已经看到了很多不同形式的实体.UserPostFormType,ModeratorPostFormType和AdminPostFormType.你可以看到,这不是很干.并检查代码中的用户类型
考虑定义角色并使用层次结构管理它们.
为每个操作定义单独的角色.因此,定义以下角色.
ROLE_ID_VIEW
ROLE_ID_EDIT
ROLE_TITLE_VIEW
ROLE_TITLE_EDIT
...
Run Code Online (Sandbox Code Playgroud)
然后,您可以将这些角色分配给正确的用户角色.
security:
role_hierarchy:
ROLE_USER: [ROLE_TITLE_VIEW, ROLE_CONTENT_VIEW, ROLE_CONTENT_EDIT]
ROLE_MODERATOR: [ROLE_USER, ROLE_TITLE_EDIT]
ROLE_ADMIN: [ROLE_MODERATOR, ROLE_ID_EDIT, ROLE_ID_VIEW]
Run Code Online (Sandbox Code Playgroud)
您现在可以使用Hierarchy Voter检查用户是否可以修改或查看某个属性.最干净的解决方案是在您的表单上创建一个Listener,它根据当前用户拥有的权限在表单上添加字段.
| 归档时间: |
|
| 查看次数: |
1277 次 |
| 最近记录: |