【发布时间】:2015-11-29 14:05:17
【问题描述】:
在我的 Symfony2 项目中,我设法按照官方文档设置了 FOSUserBundle + SonataUserBundle + SonataAdminBundle。现在是设置 ACL(访问控制列表)的时候了。
我做了什么:
创建了一个名为 AdminReport 的 AdminClass
-
应用/控制台奏鸣曲:admin:setup-acl
为 sonata.admin.report 安装 ACL 更新角色:ROLE_SONATA_ADMIN_REPORT_GUEST,权限:["LIST"] 更新角色:ROLE_SONATA_ADMIN_REPORT_STAFF,权限:["LIST","CREATE"] 更新角色:ROLE_SONATA_ADMIN_REPORT_EDITOR,权限:["OPERATOR","EXPORT"]
- 创建了一个新用户,授予他 ROLE_SONATA_ADMIN_REPORT_STAFF
- app/console sonata:admin:generate-object-acl
- 使用此用户登录并访问默认的 /admin/dashboard
应该出现包含 AdminReport 的块,但它不是......我错过了什么?
这是我的 config.yml
奏鸣曲管理员:
安全:
处理程序:sonata.admin.security.handler.acl
信息:
客人:[查看,列表]
工作人员:[编辑、列表、创建]
编辑:[操作员,出口]
管理员:[大师]
admin_permissions:[创建、列表、删除、取消删除、导出、操作员、主]
object_permissions: [查看、编辑、删除、取消删除、操作员、主控、所有者]
编辑 我试图用这个用户直接访问 app_dev.php/admin/app/report/list,Symfony 抛出一个拒绝访问错误。日志说
调试 - 访问被拒绝,用户既不是匿名用户,也不是记住我。 如果我访问 app_dev.php/admin/app/report/list 它可以工作!
所以我尝试从
更改处理程序sonata.admin.security.handler.acl到
sonata.admin.security.handler.roles
之所以有效,是因为我可以在管理仪表板中看到该块。我也尝试过改变
access_decision_manager:
策略:一致
到 肯定但它不起作用......
我肯定错过了什么,但在哪里?
【问题讨论】:
-
是的,同样的问题,我正在研究它。当我解决了它,我会给你一个解决方案:)
-
您是否从研究中获得了新信息?我完全被这个困住了......
-
我对此做了一些调整并得到了一些功能,我会在剩下几分钟的时候写一个答案:)
标签: symfony acl fosuserbundle sonata-admin sonata-user-bundle