【发布时间】:2018-04-10 16:50:50
【问题描述】:
我提前为我的英语道歉。
美好的一天!
我真的找不到我的问题的答案。我将不胜感激任何帮助。
所以。 Symfony 2.8 上有一个项目。有一个模块 SonataAdminBundle + FOSUserBundle。我创建了几个服务:User、Flat 和 Admin。
在管理区域的登录提供了 ROLE_USER 等的存在。当您使用 ROLE_SUPER_ADMIN 进入管理区域时,所有服务都是可见的,而当您使用 ROLE_USER 登录时,一个服务是不可见的。对代码的不同操作没有产生任何结果。
也许有人知道如何正确授予具有 ROLE_USER 访问权限的用户访问管理服务?
security.yml
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
access_control:
- { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_USER }
services.yml
services:
admin.admin:
class: Flatbel\FlatBundle\Admin\AdminAdmin
arguments: [~, Flatbel\FlatBundle\Entity\Flat,~]
tags:
- { name: sonata.admin, manager_type: orm, label: Admin}
AdminAdmin.php
class AdminAdmin extends AbstractAdmin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('id')
->add('userid');
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->addIdentifier('userid');
}
public function toString($object)
{
return $object instanceof User
? $object->getUsername()
: 'Flat'; // shown in the breadcrumb on the create view
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('id')
->add('userid');
}
}
【问题讨论】:
-
你能告诉我你是设置ACL还是自定义SonataUserBundle?
-
@staskrak SonataUserBundle 已配置并且工作正常。用户数据库包含标准字段,包括角色字段。注册、授权等工作正常。这没有问题。我有一个页面拒绝访问控制器中未经授权的用户:
$this->denyAccessUnlessGranted('ROLE_USER', null, 'Unable to access this page!');此解决方案有效,交响乐要求用户获得授权。但我在 security.ymlsecurity: acl: connection: default中没有这样的行 -
您是否尝试配置奏鸣曲的仪表板? symfony.com/doc/master/bundles/SonataAdminBundle/reference/…
标签: php symfony fosuserbundle sonata-admin roles