【发布时间】:2011-05-07 12:37:34
【问题描述】:
当您只处理对离散资源具有某种级别访问权限的离散用户时,如何对充当访问控制列表 (ACL) 的数据库表进行建模是相当明显的。像这样的:
TABLE acl (
user_id INT,
resource_id INT,
access_type INT
)
... 其中 access_type 是一个数字,表示类似:
0(或缺少 user_id 和 resource_id 的记录)表示无法访问
1 表示只读
2 表示完全控制
但是,当您遇到诸如用户可以是一个或多个组的成员并且组可以包含其他组的场景时,它就开始变得棘手了。那么资源可以是包含其他资源的文件夹。
除了在运行时执行一大堆递归查询以确定用户对资源的访问级别这一明显糟糕的方法之外,这些情况往往会如何处理?是否有普遍接受的设计来为这样的 ACL 建模?
【问题讨论】:
-
我遇到了同样的问题,所以我正在寻找答案。就递归而言,我假设您指的是文件夹的分层性质,请查看此问题以获取一些想法:stackoverflow.com/questions/4048151/…
-
是的,这就是我所指的 - 必须执行递归查询才能在用户组和文件夹层次结构/图表中上下移动。
标签: sql database database-design