我正在使用Sonata Admin Bundle管理一些实体。我的一个实体叫做Equivalent。它有两个简单的领域。
我运行sonata:admin:generate
为这个新实体创建一个管理类。 I / O如下:
The fully qualified model class: AppBundle\Entity\Equivalent
The bundle name [AppBundle]:
The admin class basename [EquivalentAdmin]:
Do you want to generate a controller [no]? yes
The controller class basename [EquivalentAdminController]:
Do you want to update the services YAML configuration file [yes]?
The services YAML configuration file [admin.yml]:
The admin service ID [app.admin.equivalent]:
The admin class "AppBundle\Admin\EquivalentAdmin" has been generated under the file "/usr/src/app/src/AppBundle/Admin/EquivalentAdmin.php".
The controller class "AppBundle\Controller\EquivalentAdminController" has been generated under the file "/usr/src/app/src/AppBundle/Controller/EquivalentAdminController.php".
The service "app.admin.equivalent" has been appended to the file "/usr/src/app/src/AppBundle/Resources/config/admin.yml".
...问题在于,当我去/admin/app/equivalent/list
时 - 即使是超级用户 - 我也会收到此错误:
Access Denied to the action list and role LIST
所以我的问题是:如何避免此错误并允许我的超级用户访问商家信息?
(如果您还包括允许其他行动的方法,请将其视为业力奖励。)
答案 0 :(得分:0)
糟糕!看看数据库确认我的超级用户实际上不是超级用户。用户"角色"实际上,这个领域非常稀疏。
查看security.yml
(以及数据库中的users
表),然后使用fos:user:promote
"修复"来修复缺少角色的问题。暂时的问题。
==
编辑#1:
但是几天后尝试相同的步骤并没有解决问题,所以问题仍然存在。
==
编辑#2:
经过同事的帮助和浏览https://symfony.com/doc/master/bundles/SonataAdminBundle/reference/security.html之后,很明显应用程序正在使用一些"魔法"命名约定以允许ROLE_
文件中的新security.yml
定义。
因为我在app.admin.equivalent
文件中将admin.yml
定义为服务,所以我在ROLE_APP_ADMIN_EQUIVALENT_LIST
文件的相关位置添加了security.yml
,并且列表视图已启动为我的用户工作得很好。