Symfony Sonata管理包向自定义管理员角色授予权限

Symfony Sonata管理包向自定义管理员角色授予权限,symfony,sonata-admin,Symfony,Sonata Admin,我正在使用“role”安全处理程序,希望创建一个新角色“role\u SONATA\u ADMIN”,并向其授予所有权限,如: ROLE_SONATA_ADMIN: [MASTER] 我授予用户所有权限的唯一方法是在security.yml: ROLE_SONATA_ADMIN: - ROLE_SUPER_ADMIN 但我不想在我的角色中包含角色超级管理员,因为我可能希望在将来添加一些限制 我尝试使用acl handler: sonata.admin.security.handler.

我正在使用“role”安全处理程序,希望创建一个新角色“role\u SONATA\u ADMIN”,并向其授予所有权限,如:

ROLE_SONATA_ADMIN: [MASTER]
我授予用户所有权限的唯一方法是在security.yml:

ROLE_SONATA_ADMIN:
   - ROLE_SUPER_ADMIN
但我不想在我的角色中包含角色超级管理员,因为我可能希望在将来添加一些限制

我尝试使用acl

handler: sonata.admin.security.handler.role
但是得到:
传递给Sonata\AdminBundle\Security\Handler\AclSecurityHandler::\uu construct()的参数2必须是Symfony\Component\Security\Acl\Model\MutableAclProviderInterface的实例

角色处理程序对我来说已经足够了,我不需要acl

如何创建角色并向其授予权限?我读了文档,但还是不明白

编辑:我现在明白了:对于每个实体,我都需要通过security.yml中的角色设置权限,角色为\u SONATA\u ADMIN\u[服务名称]\u[权限]
我的服务名称是:sonata.admin.widget
以下是解决方案:

        ROLE_SONATA_WIDGET_ADMIN:
      - ROLE_SONATA_ADMIN_WIDGET_LIST
      - ROLE_SONATA_ADMIN_WIDGET_VIEW
      - ROLE_SONATA_ADMIN_WIDGET_CREATE
      - ROLE_SONATA_ADMIN_WIDGET_EDIT
      - ROLE_SONATA_ADMIN_WIDGET_DELETE
      - ROLE_SONATA_ADMIN_WIDGET_EXPORT

    ROLE_SONATA_ADMIN:
      - ROLE_SONATA_WIDGET_ADMIN
检查表中的23.3点。您可以在security.yml中添加角色。如果您使用的是角色处理程序,它的工作原理如下

security:
    ...
    role_hierarchy:
        # for convenience, I decided to gather Sonata roles here
        ROLE_SONATA_FOO_READER:
            - ROLE_SONATA_ADMIN_DEMO_FOO_LIST
            - ROLE_SONATA_ADMIN_DEMO_FOO_VIEW
        ROLE_SONATA_FOO_EDITOR:
            - ROLE_SONATA_ADMIN_DEMO_FOO_CREATE
            - ROLE_SONATA_ADMIN_DEMO_FOO_EDIT
        ROLE_SONATA_FOO_ADMIN:
            - ROLE_SONATA_ADMIN_DEMO_FOO_DELETE
            - ROLE_SONATA_ADMIN_DEMO_FOO_EXPORT
        # those are the roles I will use (less verbose)
        ROLE_STAFF:             [ROLE_USER, ROLE_SONATA_FOO_READER]
        ROLE_ADMIN:             [ROLE_STAFF, ROLE_SONATA_FOO_EDITOR, ROLE_SONATA_FOO_ADMIN]
        ROLE_SUPER_ADMIN:       [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]