角色相同,针对不同用户的操作不同

时间:2019-04-10 09:13:14

标签: php symfony doctrine-orm fosuserbundle

我正在使用symfony3,并且我在应用程序中有许多角色,我想作为管理员将许多动作(管理书,管理项目..)归因于不同的用户,而他们已经具有相同的角色,例如两个学生可以具有不同的管理(动作),但是他们已经具有相同的角色“ ROLE_STUDENT”。 知道我使用FOSUserBundle进行用户管理。我在Internet上发现了许多解决方案,例如使用ACL,组,权限,并将这些操作用作角色。 那么,我该如何将操作归于具有相同角色的不同用户,以及最佳解决方案是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用角色,角色层次结构和投票者的组合

/** 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的所有许可。他们具有管理员权限

然后,您可以使用选民来更精确地控制谁可以对您的对象执行操作

https://symfony.com/doc/current/security/voters.html