gpt4 book ai didi

php - 在数据库中保存三级权限

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

在涉及 2 个以上级别的数据库中存储权限的最佳方法是什么?目前只有 2 级权限,它们存储在如下桥接实体表中:

UID | Buildings | Floor
------------------------
1 | A, B, C | F9

还有另一个名为 Exceptions 的表,它具有相同的结构,表明用户不应该拥有这些权限:

UID | Buildings | Floor
------------------------
1 | null | C4

所以在我上面的示例中,用户 1 将有权访问 F 楼的 9 楼,以及 A、B 和 C 楼的所有房间,但不能访问 C 楼的 4 楼。

新要求是添加更精细级别的权限,即楼层房间。所以代码看起来像 A1A、A1B 等。建筑物和房间始终按字母顺序排列,楼层编号始终按数字排列。 我无法更改这些代码的格式,因为它们来自外部来源。

处理这种情况的最佳方法是什么?我知道 Linux 通过组和用户使用位字符串处理文件权限,但在我的情况下有数千个房间,这听起来不可行,而且用户/组的事情只有两个级别。

我考虑过只添加一个名为 Rooms 的新列并继续使用逗号分隔的字符串,但是否有更好的方法?如果重要的话,我正在使用 MySQL。

最佳答案

如果我必须实现这个,我会使用一个包含三列的表 - uid、type 和 element。Uid 引用用户、类型(建筑物、楼层、房间)和元素建筑物或楼层或房间的代码。我通常会为每个访问元素的每个人插入一行。

如果我确定元素的格式遵循严格的模式,我也可以变得更加大胆。例如

建筑物将只有字母代码

楼层会有像字母.数字这样的代码

房间会有类似字母.数字.字母的代码

在上述情况下,您可以仅使用一个包含 uid 和 element 列的表,因为您可以从数据格式中提取元素的类型(如果它是建筑物、楼层或房间)。您还可以更进一步,使用通配符存储访问权限:

进入C栋所有楼层和房间:C*

进入B栋6层所有房间:B6*

甚至

访问所有楼层和建筑物中的所有 C 房间:**C

进入所有二楼:*2*

希望对你有帮助

关于php - 在数据库中保存三级权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25951967/

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