Symfony2 中的嵌套授权支持

Nested authorization support in Symfony2

一个系统有嵌套的资源。例如

Farm HasMany Sectors

示例对象关系如下所示

farm1 => [sector1]
farm2 => [sector2, sector3]

现在说,user1 具有对 farm1 的读、写权限。

user1 Has(read,write) on farm1

我需要系统自动使用对 farm1 的所有嵌套资源的访问权限,在本例中 sector1

换句话说,user1.hasWritePermisson(sector1) 应该 return 为真,尽管 ACL 实际上是用 farm1 存储的。我什至需要它来处理扇区等的嵌套资源。

一个直接的解决方案可能是在更新其 acl 时复制对 farm1 的所有子对象的访问权限。但我相信如果 farm1 包含数千个扇区,这将是一个非常低效的方法。

symfony2 中实现此目标的最佳方法是什么?

首先。我认为您的问题与 SF2 无关。在我看来,您应该创建一个高效的数据库来帮助您完成任务。剩下的只有几个查询了。

据我了解,这将是 3 个主要对象:UserFarmSector

User could be in many Farms and Farms could be seen/wrote by many users

A Farm has many sectors, but a sector can only be in one farm

澄清一下,您还需要声明每个用户在服务器场中拥有的权限。但是,这将在具有两个关系属性(读、写)的多对多关系中声明。

一旦一切设计良好,您应该能够创建满足您需求的查询。

我知道这很难理解,因为我说的很抽象,但是如果你不明白,请告诉我,我会画一个方案给你。