【问题标题】:Symfony 2 - Sonata Admin Role based securitySymfony 2 - Sonata 管理员基于角色的安全性
【发布时间】:2013-04-11 11:35:40
【问题描述】:

对于 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

是不是我误解了什么?

【问题讨论】:

    标签: security symfony acl symfony-sonata


    【解决方案1】:

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

    ROLE_SONATA_USER_ADMIN_LIST
    ROLE_SONATA_USER_ADMIN_VIEW
    

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

    • LIST:查看对象列表
    • VIEW:查看一个对象的详细信息
    • CREATE:创建一个新对象
    • 编辑:更新现有对象
    • DELETE:删除现有对象
    • EXPORT:(用于原生 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]
    

    【讨论】:

    • 我明白了,我没有得到它是作为示例给出的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2013-03-25
    • 2015-12-30
    • 2013-03-21
    • 2011-05-12
    相关资源
    最近更新 更多