Security Symfony 2-Sonata管理员基于角色的安全性

Security Symfony 2-Sonata管理员基于角色的安全性,security,symfony,acl,symfony-sonata,Security,Symfony,Acl,Symfony Sonata,对于Sonata,我尝试使用基于角色的安全性 我想给一个组,列出、编辑和创建用户的权限,所以我创建了一个角色 ROLE_MANAGE_USERS: - ROLE_SONATA_USER_ADMIN_USER_EDIT - ROLE_SONATA_USER_ADMIN_USER_LIST - ROLE_SONATA_USER_ADMIN_USER_CREATE 这很好,但根据,我理解用户被授予 ROLE_SONATA_USER_STAFF 应该已经继承了[编辑、列出、创

对于Sonata,我尝试使用基于角色的安全性

我想给一个组,列出、编辑和创建用户的权限,所以我创建了一个角色

ROLE_MANAGE_USERS:
    - ROLE_SONATA_USER_ADMIN_USER_EDIT
    - ROLE_SONATA_USER_ADMIN_USER_LIST
    - ROLE_SONATA_USER_ADMIN_USER_CREATE
这很好,但根据,我理解用户被授予

ROLE_SONATA_USER_STAFF
应该已经继承了
[编辑、列出、创建]
的权限,但情况似乎并非如此

我也试过了

ROLE_SONATA_USER_ADMIN_USER_STAFF

有什么我误解了吗?

我想不是这样的。首先,要编辑的主要角色的名称取决于服务名称。例如,如果管理员的服务是
sonata.user.admin
,那么角色将是,例如:

ROLE_SONATA_USER_ADMIN_LIST
ROLE_SONATA_USER_ADMIN_VIEW
如您所见,前缀始终为
ROLE
(symfony 2要求),后跟服务名称(但点与下划线和所有大写字母交换),并以特定权限的前缀结尾:

  • 列表:查看对象列表
  • 视图:查看一个对象的详细信息
  • 创建:创建新对象
  • 编辑:更新现有对象
  • 删除:删除现有对象
  • 导出:(用于本地奏鸣曲导出链接)
据我所知,没有预定义用于编辑、列出和创建的角色\u SONATA\u USER\u STAFF。但是,您可以在层次结构的security.yml文件中定义它:

security:
    role_hierarchy:
        # Setting up 
        ROLE_SONATA_USER_STAFF:
            - ROLE_SONATA_USER_ADMIN_EDIT
            - ROLE_SONATA_USER_ADMIN_LIST
            - ROLE_SONATA_USER_ADMIN_CREATE
        # using the staff role to create new roles
        ROLE_MANAGE_USERS:             [ROLE_SONATA_USER_STAFF]

我明白了,我不明白这是一个例子。