【问题标题】:How to allow the user ROLE_USER access to the SonataAdminBundle service?如何允许用户 ROLE_USER 访问 SonataAdminBundle 服务?
【发布时间】:2018-04-10 16:50:50
【问题描述】:

我提前为我的英语道歉。

美好的一天!

我真的找不到我的问题的答案。我将不胜感激任何帮助。

所以。 Symfony 2.8 上有一个项目。有一个模块 SonataAdminBundle + FOSUserBundle。我创建了几个服务:UserFlatAdmin

在管理区域的登录提供了 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.yml security: acl: connection: default 中没有这样的行
  • 您是否尝试配置奏鸣曲的仪表板? symfony.com/doc/master/bundles/SonataAdminBundle/reference/…

标签: php symfony fosuserbundle sonata-admin roles


【解决方案1】:

需要在sonata_admin.yaml中配置role_admin:

sonata_admin:
    ...
    security:
        role_admin: ROLE_USER

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2015-02-21
    • 2012-07-06
    • 2021-08-28
    相关资源
    最近更新 更多