Symfony 2 - Sonata Admin基于角色的安全性

时间:2013-04-11 11:35:41

标签: 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

这很好,但根据doc,我理解授予用户

ROLE_SONATA_USER_STAFF

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

我也试过

ROLE_SONATA_USER_ADMIN_USER_STAFF

有什么我误解了吗?

1 个答案:

答案 0 :(得分:1)

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

ROLE_SONATA_USER_ADMIN_LIST
ROLE_SONATA_USER_ADMIN_VIEW

正如您所看到的,前缀始终是ROLE(symfony 2要求),后跟服务名称(但是用下划线和所有大写字母交换了点),并以前缀为具体许可:

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

据我所知,没有为编辑,列表和创建预定义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]