Ser*_*gri 6 security authorization multi-user symfony
我即将开始一个项目,需要几种具有不同"权力"的用户.
为了给出一些上下文,我期待1000到10000个用户.
我至少有3个"层":A,B,C
"A"可以是"咨询公司",每个公司都有不同的客户"B",每个客户都有几个项目"C".
一个用户可能需要查看其公司"A"管理的所有项目的概述.另一个只是其中一个公司"B".另一个项目"A".某些用户可能会在每个级别上被授予更细粒度的细节(可能用户在"B"级别上具有细粒度级别但在"A"级别上看不到任何内容).某些用户可能只有读取权限,其他用户可以阅读和修改,有些用户可以阅读,修改和创建.
最后,我可能会得到100000或100万个"对象",我必须向其授予读/写/删除/修改权限.
我必须在相对简单的选民系统或完整的ACL之间做出选择.虽然看起来非常强大,但我注意到ACL并没有很好地记录在案.我几乎丢弃了选民,但后来我读到了这篇让我改变主意的文章.从文章引用:
这通常是您在谈论ACL时所能想到的:能够说"此用户"可以"编辑"某些"对象".在Symfony2中,您可以利用自定义选民来使用您拥有的任何复杂业务逻辑来确定这一点.
根据这篇文章你可以使用选民作为:
isGranted的另一个常见未知属性是第二个参数,它是任何类型的"对象"
所以这是我的问题,考虑到我暴露的背景:
1)选民选项是否会授予我所需的所有灵活性?
2)性能明智(ACL特别指出,即使有数百万个对象也没有性能衰退,我对选民有疑虑)
3)如果我选择选民,我可以安全地使用FOSUserBundle,尽管指定了与Symfony 1.2相关的东西吗?
您可能应该在您的情况下使用选民.2013年华沙SymfonyCon对此进行了很好的讨论 - https://www.youtube.com/watch?v=e7HfW4TgnUY
1)选民将授予您所需的所有灵活性.您将选民注册为服务(链接),以便您可以传递给选民EntityManager,Doctrine Registry,EntityRepository或您想要的任何服务.
2)它可能不是性能,但你应该先测量并分析它(并在一些博客文章中分享,因为这可能非常有趣)
3)当然可以.发布Symfony 1.2?你是说Symfony 2.1吗?你可以在packagist看到FOSUser支持所有当前版本的symfony :)
| 归档时间: |
|
| 查看次数: |
1872 次 |
| 最近记录: |