使用ROLES而不是ACL管理Sonata Admin

时间:2017-07-07 12:34:12

标签: symfony authorization acl sonata-admin

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

我的项目中不需要this复杂ACL(VIEW,EDIT,LIST,DELETE)。我想确定该角色对某个管理员或行动的访问权限。

这是一个好习惯:

  • 在twig中而不是使用admin.isGranted()admin.hasAccess()来使用默认的is_granted('SUPER_ADMIN')
  • 在controler或admin类中使用security.authorization_checker isGranted()

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

1 个答案:

答案 0 :(得分:1)

Sonata角色方法定义了每个管理类的角色,其中包含一个特殊角色*_ALL,可授予对相关管理区域的完全访问权限,因此您可以将这些*_ALL归为ROLE_ADMIN或{{ 1}} ROLE_SUPER_ADMINrole_hierarchy文件)中的角色,例如:

security.yml

遵循此继承方法,您可以为一些用户分配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。即使您可以为特定操作执行一些角色子组。