gpt4 book ai didi

security - Symfony2 授权 : Voters Vs. ACL

转载 作者:行者123 更新时间:2023-12-04 14:27:16 26 4
gpt4 key购买 nike

我即将开始一个项目,该项目将需要几种具有不同“权力”的用户。

为了提供一些背景信息,我预计会有 1000 到 10000 个用户。

我至少有 3 个“层”:A、B、C

“A”可以是“咨询公司”,每个公司都有不同的客户“B”,每个公司都有几个项目“C”。

一位用户可能需要查看其公司“A”管理的所有项目的概览。
另一个只是公司“B”之一的公司。
另一个只是项目“A”。
某些用户可能会在每个级别上获得更细粒度的详细信息(也许用户在“B”级别具有细粒度级别,但在“A”级别上看不到任何内容)。
一些用户可能只有读取权限,其他人读取和修改,其他人读取、修改和创建。

最后,我可能会得到 100000 或 100 万个“对象”,我必须授予读/写/删除/修改权限。

我必须在相对简单的 Voters 系统或成熟的 ACL 之间进行选择。我注意到 ACL 并没有被很好地记录下来,尽管它看起来很强大。
我几乎放弃了选民,但后来我读到 this article这让我改变了主意。引自文章:

This is typically what you think of when you talk about ACL: the ability to say that “this user” has access to “edit” some “object”. In Symfony2, you can leverage a custom voter to use whatever complex business logic you have to determine this.



根据文章,您可以为此使用 Voters:

One other commonly-unknown property of isGranted is that there’s a second argument, which is any type of “object”



因此,考虑到我所暴露的上下文,以下是我的问题:

1) 选民选项会给予我需要的所有灵活性吗?

2)性能明智(ACL明确指出即使有数百万个对象也没有性能衰减,我对选民有疑问)

3) 如果我选择选民,我可以安全地使用 FOSUserBundle ,尽管被指定了与 Symfony 1.2 相关的东西?

最佳答案

在您的情况下,您可能应该使用选民。 2013 年在华沙的 SymfonyCon 上有很好的讨论 - https://www.youtube.com/watch?v=e7HfW4TgnUY

1) Voter 将授予您所需的所有灵活性。您将选民注册为服务 ( link ),以便您可以传递给选民 EntityManager、Doctrine Registry、EntityRepository 或您想要的任何服务。

2)这可能不是性能明智的,但您应该首先以某种方式对其进行测量和分析(并在一些博客文章中分享,因为这可能非常有趣)

3)当然可以。与 Symfony 1.2 相关?你是说 Symfony 2.1 吗?您可以在 packagist 看到FOSUser 支持所有当前版本的 symfony :)

关于security - Symfony2 授权 : Voters Vs. ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27281817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com