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 个主要对象:User
、Farm
和 Sector
。
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
澄清一下,您还需要声明每个用户在服务器场中拥有的权限。但是,这将在具有两个关系属性(读、写)的多对多关系中声明。
一旦一切设计良好,您应该能够创建满足您需求的查询。
我知道这很难理解,因为我说的很抽象,但是如果你不明白,请告诉我,我会画一个方案给你。
一个系统有嵌套的资源。例如
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 个主要对象:User
、Farm
和 Sector
。
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
澄清一下,您还需要声明每个用户在服务器场中拥有的权限。但是,这将在具有两个关系属性(读、写)的多对多关系中声明。
一旦一切设计良好,您应该能够创建满足您需求的查询。
我知道这很难理解,因为我说的很抽象,但是如果你不明白,请告诉我,我会画一个方案给你。