php - 相同的角色对不同的用户有不同的操作
问题描述
我正在使用 symfony3,我在我的应用程序中有很多角色,我希望作为管理员将许多操作(管理书籍、管理项目..)归因于不同的用户,但是他们已经拥有相同的角色,例如两个学生可以拥有不同的管理(操作),但是它们已经具有相同的角色“ROLE_STUDENT”。知道我使用 FOSUserBundle 进行用户管理。我在互联网上找到了许多解决方案,例如使用 ACL、组、权限,将这些操作用作角色。那么我如何将操作归因于具有相同角色的不同用户,最好的解决方案是什么?
解决方案
您可以使用角色、角色层次结构和选民的组合
/** 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 更精确地控制谁可以对您的对象做什么
推荐阅读
- neural-network - 如何处理NN训练过程的随机性?
- jquery - Jquery - 将默认值设置为动态生成的表单选择
- html - 当窗口宽度减小时,Div 宽度逐渐增加(带媒体查询)
- c - Windows:使用事件进行共享内存同步
- android - 必须在添加内容之前调用 requestWindowFeature()
- c# - 从套接字接收时确定可变消息长度的可靠方法
- tkinter - 如何在 Scrapy 中使用 Tkinter 或任何其他 python GUI
- wpf - 如何将输入绑定添加到 DataGrid 样式
- java - 如何缩放画布以使我的应用程序占据整个屏幕?
- view - 如何在 nattable 和 Jface 视图之间交叉更新视图