【发布时间】:2015-02-01 14:41:15
【问题描述】:
我即将开始一个项目,该项目需要多种具有不同“权力”的用户。
为了提供一些背景信息,我预计会有 1000 到 10000 个用户。
我至少有 3 个“层”:A、B、C
“A”可以是“咨询公司”,每个都有不同的客户“B”,每个都有多个项目“C”。
一位用户可能需要查看其公司“A”管理的所有项目的概览。 另一个只是“B”公司之一。 另一个只是项目“A”。 某些用户可能会在每个级别上获得更细粒度的详细信息(可能用户在“B”级别上具有细粒度级别,但在“A”级别上看不到任何内容)。 有些用户可能只有读取权限,有些用户可以读取和修改,有些用户可以读取、修改和创建。
最后我可能会得到 100000 或 100 万个“对象”,我必须授予它们读/写/删除/修改权限。
我必须在相对简单的 Voters 系统或成熟的 ACL 之间做出选择。我注意到 ACL 的文档并没有那么完善,尽管它看起来非常强大。 我几乎抛弃了选民,但后来我读了this article,这让我改变了主意。引用文章:
这通常是您在谈论 ACL 时所想到的:能够说“此用户”有权“编辑”某些“对象”。在 Symfony2 中,您可以利用自定义投票器来使用任何复杂的业务逻辑来确定这一点。
根据文章,您可以将 Voters 用作:
isGranted 的另一个普遍未知的属性是有第二个参数,它是任何类型的“对象”
考虑到我所公开的背景,以下是我的问题:
1) 投票者选项能否提供我需要的所有灵活性?
2) 在性能方面还可以(ACL 特别指出,即使有数百万个对象也没有性能衰减,我对 Voters 表示怀疑)
3) 如果我选择 Voters,尽管指定了与 Symfony 1.2 相关的内容,我是否可以安全地使用 FOSUserBundle?
【问题讨论】:
标签: security symfony authorization multi-user