首页 > 解决方案 > 相同的角色对不同的用户有不同的操作

问题描述

我正在使用 symfony3,我在我的应用程序中有很多角色,我希望作为管理员将许多操作(管理书籍、管理项目..)归因于不同的用户,但是他们已经拥有相同的角色,例如两个学生可以拥有不同的管理(操作),但是它们已经具有相同的角色“ROLE_STUDENT”。知道我使用 FOSUserBundle 进行用户管理。我在互联网上找到了许多解决方案,例如使用 ACL、组、权限,将这些操作用作角色。那么我如何将操作归因于具有相同角色的不同用户,最好的解决方案是什么?

标签: phpsymfonydoctrine-ormfosuserbundle

解决方案


您可以使用角色、角色层次结构和选民的组合

/** 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


推荐阅读