我正在开始使用Symfony2,我想在层次结构类别中对用户进行分组,并为他们提供ROLES。该应用程序需要很多类别,其中一些将为数百个其他类别(也可能是其他人的父母)提供帮助。我想给父母一个ROLES,然后孩子们可以继承ROLES。 我不知道什么是最好的方式: - 我可以使用来自FOSUserBundle的组,但我找不到如何使用父组,因为FOSUserBundle的组已经在使用ROLES,所以它将是完美的。 - 或者我应该从零开始创建一个类别实体,但我不知道如何做到这一点(如何链接类别和ROLES),这听起来像是“重新发明轮子”给我。
答案 0 :(得分:1)
我认为ACL是一种好方法,但另一种解决问题的聪明方法是使用选民。 选民是一个负责决定连接用户是否有权对给定对象执行某些操作的类。 您可以使用nested tree system执行简单的层次结构,然后将您的选民声明为here。阅读这篇文章并了解它,它真的很酷。
在我看来,当您的业务逻辑可以与用户权限进行交互时,这是一种非常酷的方式。它对我有用,这是我的项目:
我有很多不同类型的员工(员工,顾问,分包商,客户),他们每个人都与人力资源,销售管理员,经理以及其中一些人员联系到任务......你可以想象,这让我们大开眼界。
我们无法使用Gedmo嵌套树,因为同一个类上有几棵树,gedmo不允许这样的事情......所以我们建立了一个UserBoss系统,每次我们想知道某个人是否有显示或编辑某人的权利,我只需要在整个UserBossManager中检查UserBoss关系(每次在某处更改时都保持树最新)并告诉我isBoss($ user1,$ user2)函数是user1 user2的老板(因为层次结构,显然,我们不能只检查直接关系,我老板的老板也是我的老板!)。
所以我希望我的反馈会帮助你(或其他一些读者):) 祝你好运!