【问题标题】:Same Role with different actions for different users相同的角色对不同的用户有不同的操作
【发布时间】:2019-04-10 09:13:13
【问题描述】:
我正在使用 symfony3,并且我在我的应用程序中有许多角色,我希望作为管理员将许多操作(管理书籍、管理项目..)归因于不同的用户,但是他们已经拥有相同的角色,例如两个学生可以有不同的管理(操作),但他们已经拥有相同的角色“ROLE_STUDENT”。
知道我使用 FOSUserBundle 进行用户管理。我在互联网上找到了许多解决方案,例如使用 ACL、组、权限,将这些操作用作角色..
那么如何将操作归因于具有相同角色的不同用户,最好的解决方案是什么?
【问题讨论】:
标签:
php
symfony
doctrine-orm
fosuserbundle
【解决方案1】:
您可以使用角色、角色层次结构和投票者的组合
/** security.yaml **/
role_hierarchy:
ROLE_ADMIN
ROLE_STUDENT_BOOK: ROLE_STUDENT
ROLE_STUDENT_PROJECT: ROLE_STUDENT
ROLE_STUDENT_LIBRARY: [ROLE_STUDENT_BOOK, ROLE_STUDENT_PROJECT]
在这里,您的用户可以拥有角色 ROLE_STUDENT_BOOK 并管理书籍,其中另一个学生管理项目,第三个管理两者......但最终他们仍然是学生,拥有 ROLE_STUDENT 的所有权限。当然没有他们有管理员权限
然后您可以使用 voter 更精确地控制谁可以对您的对象执行什么操作
https://symfony.com/doc/current/security/voters.html