0

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

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

ROLE_MANAGE_USERS:
    - ROLE_SONATA_USER_ADMIN_USER_EDIT
    - ROLE_SONATA_USER_ADMIN_USER_LIST
    - ROLE_SONATA_USER_ADMIN_USER_CREATE

这工作正常,但根据doc,我理解用户授予

ROLE_SONATA_USER_STAFF

应该已经继承了 的权利[EDIT, LIST, CREATE],但似乎并非如此

我也试过

ROLE_SONATA_USER_ADMIN_USER_STAFF

有什么我误解了吗?

4

1 回答 1

1

我想情况并非如此。首先,用于编辑的主要角色的名称取决于服务名称。例如,如果管理员的服务是sonata.user.admin,那么角色将是,例如:

ROLE_SONATA_USER_ADMIN_LIST
ROLE_SONATA_USER_ADMIN_VIEW

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

  • LIST:查看对象列表
  • VIEW:查看一个对象的详细信息
  • CREATE:创建一个新对象
  • 编辑:更新现有对象
  • DELETE:删除现有对象
  • 导出:(用于原生奏鸣曲导出链接)

据我所知,没有为编辑、列出和创建预定义的 ROLE_SONATA_USER_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]
于 2013-11-25T06:23:00.090 回答