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