gpt4 book ai didi

php - 具有父子关系的不同表的访问控制

转载 作者:行者123 更新时间:2023-11-29 11:25:29 25 4
gpt4 key购买 nike

我正在尝试在我正在编写的应用程序中设置访问控制。我见过 ACL 和角色/权限系统等方法(如 here 和许多其他描述的方法,以及 Nested Set Model ),但我不确定是否可以使用这些方法实现我的目标。

我想做的是找到一种方法来允许访问对象的子对象。问题是子项存储在不同的表中并代表不同的实体。一个例子:

City > Streets (city_id) > Houses (street_id) > People (house_id)

在此场景中,这些对象中的每一个都存储在数据库中的不同表中,并通过括号内的字段指向其父对象。我想要做的是能够仅授予用户“城市”级别的权限(即授予城市#10的权限),这将授予下面各个表上的所有 child 的访问权限,无论是街道、房屋、或人。 (因此,我可以询问诸如“用户 A 对 16 号房屋有权限吗?”之类的问题,系统可以确定 16 号房屋是否是城市 10 号对象的子/孙子等。)

现在,我知道这可以通过在数据库中使用多个联接等来完成,但这感觉像是一种“蛮力”方法,并且不会非常干燥或可重用。如果可能的话,我希望找到一种更有效/不那么幼稚的方法来实现这一目标。谢谢!

最佳答案

找到答案:Models for Hierarchical Data in SQL and PHP .

该视频讨论了“闭包表”,这正是我正在寻找的内容。使用闭包表中的“深度”和“祖先”字段,我可以从层次结构的任何级别(人物、房屋、街道)查明数据所属的城市。

我还创建了一个“安全”表,其中人员、房屋和街道表中的每一行都有一行。然后我的闭包表(以及一些配置来告诉每个子表其深度应该是多少)将它们连接到一棵树中。然后,使用配置的深度,我可以随时从单个查询中的任何节点获取城市树​​的根!急!

关于php - 具有父子关系的不同表的访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294101/

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