Symfony中的事件监听器是实现超级管理员可以模拟其他用户的页面的正确方式吗


Are eventlisteners in Symfony the correct way to implement pages where a superadmin can emulate other users?

我一直在学习Symfony文档中的"如何使用表单事件动态修改表单"教程,目的是为体育俱乐部网站构建超级用户页面。给出一些观点:

  • 该网站有两个页面,用户和超级用户都可以编辑:"家长详细信息"、"学生详细信息"

  • 该网站有两个页面,用户可以查看,超级用户可以编辑:"付款"answers"竞争结果"

  • 超级用户可以访问数据库中对普通用户隐藏的一些额外字段(例如关于付款状态的文本评论和关于家长/学生的注释)

我正在尝试将超级用户页面与每个页面导航栏中的选择框放在一起,以便超级用户可以选择他们所在页面的常规用户,并在他们想要模拟和更新的用户之间快速切换。

然而,我想检查一下这是正确的方式,还是错误的方式(例如,我现在想知道我是否应该通过会话管理和FOSUserBundle来管理这件事?)

更新:只是为了清楚起见

当超级用户"模拟"普通用户时,菜单中的选择框/选项仍然应该只返回与该用户相关的值(例如,他们在俱乐部的孩子/孩子的名字以及他们参加的每项运动的时间表)

在Symfony 3 Doc中创建ACL的更好方法。http://symfony.com/doc/current/cookbook/security/acl.html

请参阅Symfony 2答案:
Symfony2:在数据库中存储用户、角色、角色层次结构和访问控制

ACL示例GitHub报告:
https://github.com/GoDisco/AclTreeBundle
https://github.com/wemakecustom/symfony-acl-bundle