我正在使用"角色"安全处理程序,并希望创建一个新角色" ROLE_SONATA_ADMIN"并授予它所有权限,如:
ROLE_SONATA_ADMIN: [MASTER]
我可以授予我的用户所有权限的唯一方法是在security.yml中提供它:
ROLE_SONATA_ADMIN:
- ROLE_SUPER_ADMIN
但我不想在我的角色中包含ROLE_SUPER_ADMIN,因为我可能希望将来添加一些限制
我尝试使用acl
handler: sonata.admin.security.handler.role
但得到:
Argument 2 passed to Sonata\AdminBundle\Security\Handler\AclSecurityHandler::__construct() must be an instance of Symfony\Component\Security\Acl\Model\MutableAclProviderInterface
角色处理程序对我来说已经足够了,我不需要acl
如何创建角色并为其授予权限?我已经阅读了文档,但仍然不理解
编辑:我现在明白了:对于我需要通过角色在security.yml中设置权限的每个实体,使用ROLE_SONATA_ADMIN_ [服务名称] _ [权限]
我的服务名称是:sonata.admin.widget
这里解决方案:
ROLE_SONATA_WIDGET_ADMIN:
- ROLE_SONATA_ADMIN_WIDGET_LIST
- ROLE_SONATA_ADMIN_WIDGET_VIEW
- ROLE_SONATA_ADMIN_WIDGET_CREATE
- ROLE_SONATA_ADMIN_WIDGET_EDIT
- ROLE_SONATA_ADMIN_WIDGET_DELETE
- ROLE_SONATA_ADMIN_WIDGET_EXPORT
ROLE_SONATA_ADMIN:
- ROLE_SONATA_WIDGET_ADMIN
答案 0 :(得分:3)
检查documentation中的第23.3点。您可以在 security.yml 中添加角色。如果您使用角色处理程序,它的工作原理如下。
security:
...
role_hierarchy:
# for convenience, I decided to gather Sonata roles here
ROLE_SONATA_FOO_READER:
- ROLE_SONATA_ADMIN_DEMO_FOO_LIST
- ROLE_SONATA_ADMIN_DEMO_FOO_VIEW
ROLE_SONATA_FOO_EDITOR:
- ROLE_SONATA_ADMIN_DEMO_FOO_CREATE
- ROLE_SONATA_ADMIN_DEMO_FOO_EDIT
ROLE_SONATA_FOO_ADMIN:
- ROLE_SONATA_ADMIN_DEMO_FOO_DELETE
- ROLE_SONATA_ADMIN_DEMO_FOO_EXPORT
# those are the roles I will use (less verbose)
ROLE_STAFF: [ROLE_USER, ROLE_SONATA_FOO_READER]
ROLE_ADMIN: [ROLE_STAFF, ROLE_SONATA_FOO_EDITOR, ROLE_SONATA_FOO_ADMIN]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]