我正在基于角色和权限在Symfony 3中构建一个Admin面板 . 将为每个管理员分配一个角色(或多个角色),然后他将能够根据分配给该角色的权限执行操作 .
为了给你一个想法,这是一个例子:
-
管理面板具有添加用户,编辑用户和删除用户的功能 .
-
我创建了一个角色:
USER_MANAGEMENT_WITHOUT_DELETE
,其拥有user_create
和user_edit
的权限 . -
我创建了
USER_MANAGEMENT_WITH_DELETE
角色,该角色拥有user_create
,user_edit
和user_delete
的权限 -
所以现在,管理员与角色
USER_MANAGEMENT_WITH_DELETE
可以add
,edit
和delete
用户所在的管理员角色USER_MANAGEMENT_WITHOUT_DELETE
只能add
和edit
用户但不能删除它们 .
我搜索并发现了FOSUserBundle和ACL . 有些recommended ACL而其他人则认为use FOSUserBunder更好
我还阅读了FOSUserBunder的文档以及它如何在 roles
列中存储角色,类似于 a:1:{i:0;s:10:"ROLE_ADMIN";}
,但没有提到任何关于权限的内容 . 所以这是我的疑问:
-
我在两者之间感到困惑 . 我应该使用哪一个?
-
如果我使用
FOSUserBunder
,如何管理权限?
1 回答
角色不是特定的tu FOSUserBundle . 他们在Symfony .
ACLs比使用角色更复杂 . 所以我建议使用角色 .
来自Symfony文档:ACL的替代方案
要处理'permissions',我建议使用Voters:
首先创建一个这样的选民:
配置:
和 class :
然后,您可以检查控制器中的权限: