使用 ROLES 而不是 ACL 管理 Sonata Admin

Managing Sonata Admin with ROLES instead of ACL

我对ACL的理解非常有限,我对SonataAdminBundle的使用也很简单,包括两个角色ADMINSUPER_ADMIN

我的项目(查看、编辑、列表、删除)中不需要this复杂的ACL。我想通过角色来确定对某个管理员或操作的访问权限。

这是一个好习惯吗:

如何确定哪个 ROLE 可以访问哪个页面?例如,在侧边栏中仅显示 SUPER_ADMIN 的某些管理页面并且不允许 ADMIN.

访问

Sonata 角色方法定义每个管理员的角色 class,包括一个特殊角色 *_ALL,授予对相关管理区域的完全访问权限,因此您可以将这些 *_ALL 分组在 [=您的 role_hierarchysecurity.yml 文件)中的 13=] 或 ROLE_SUPER_ADMIN 角色,例如:

role_hierarchy:
    ROLE_ADMIN: 
        - ROLE_USER
        - ROLE_FOO_BUNDLE_BAR_ADMIN_ALL
        - ROLE_FOO_BUNDLE_BAZ_ADMIN_ALL
        # ...
    ROLE_SUPER_ADMIN: 
        - ROLE_ADMIN
        - ROLE_ALLOWED_TO_SWITCH
        - ROLE_SU_BUNDLE_SU_ADMIN_ALL
        # ...

按照这种继承方法,您可以只为一个用户分配 ROLE_ADMIN,为其他用户分配 ROLE_SUPER_ADMIN。甚至您也可以对特定操作执行一些子角色分组。