【发布时间】:2016-10-27 09:28:58
【问题描述】:
我正在使用 SonataAdminBundle 没有 SonataUserBundle,但只有 FOSUserBundle。原因是因为我使用的是 Symfony 3,而 SonataUserBundle 在那里不起作用。
现在,我有 24 个管理服务。我只需要修改一个管理员类,这样用户就不能创建新用户,也不能修改其他用户的个人资料。只有超级管理员才能做到这一点。
但这是否意味着我必须像这样写出 24 个管理员的角色?
ROLE_OPTICKS_ACCESS:
- ROLE_SONATA_ADMIN_FOO_LIST
- ROLE_SONATA_ADMIN_FOO_VIEW
- ROLE_SONATA_ADMIN_FOO_CREATE
- ROLE_SONATA_ADMIN_FOO_EDIT
- ROLE_SONATA_ADMIN_FOO_DELETE
- ROLE_SONATA_ADMIN_FOO_EXPORT
然后,我的 security.yml 中将包含大约 144 行。然后我可以删除上面写着ROLE_SONATA_ADMIN_USER_CREATE 和ROLE_SONATA_ADMIN_USER_EDIT 的两行,然后仍然想办法让只能编辑他自己的个人资料。
有人可以帮忙吗?这是最好的方法吗?我做得对吗?
因为我只是在想这样的事情;
protected function configureRoutes(RouteCollection $collection)
{
$securityContext = $this->getConfigurationPool()->getContainer()->get('security.authorization_checker');
if (!$securityContext->isGranted('ROLE_SUPER_ADMIN')) {
$collection->remove('create');
$collection->remove('edit');
}
}
但显然我做错了,我也得到了一个错误说;
令牌存储不包含身份验证令牌。一种可能 原因可能是没有为此网址配置防火墙
拜托,我非常需要帮助。
【问题讨论】:
标签: symfony sonata-admin symfony-sonata sonata-user-bundle