使用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
有什么我误解了吗?
答案 0 :(得分:1)
我想情况并非如此。首先,编辑主要角色的名称取决于服务名称。例如,如果管理员的服务是sonata.user.admin
,那么角色将是,例如:
ROLE_SONATA_USER_ADMIN_LIST
ROLE_SONATA_USER_ADMIN_VIEW
正如您所看到的,前缀始终是ROLE
(symfony 2要求),后跟服务名称(但是用下划线和所有大写字母交换了点),并以前缀为具体许可:
据我所知,没有为编辑,列表和创建预定义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]