【发布时间】:2012-01-02 08:33:20
【问题描述】:
一个逻辑卡点。我正在构建一个简单的 ACL,但我很困惑。我只是想以正确的方式做到这一点。
以一个简单的基于模型的 ACL 为例。
管理用户表tbl_user
id | userid |
-------------
1 | nabin |
2 | suman |
另一个用于管理群组的表格tbl_group
id | groupname |
-----------------
1 | admin |
2 | member |
3 | editor |
4 | moderator |
另一个用于维护组和用户的表。 tbl_roles
id | userid | groupid
-----------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
4 | 2 | 3
5 | 2 | 4
现在是一个用于管理访问 tbl_acl 的表
id | groupid | appresourceid
----------------------------
1 | 3 | 1
在这张表上,我将存储拒绝列表,因为拒绝列表肯定会比访问列表短。
现在,根据示例groupid:3 (editor),已拒绝资源1(假设这是管理区域)。
但是,如果你选择userid: 2(suman),那么他就是editor 和moderator。根据tbl_acl的规则,editor应该被拒绝,moderator应该被允许。
应该允许他访问资源还是应该拒绝? 允许 FIRST或拒绝 FIRST。应该优先考虑哪个?
一些调查方法
- 虽然用户作为编辑被拒绝,但他作为版主被允许访问该区域。
- 尽管版主可以访问资源,但所有编辑都受到限制。
- 不要忘记用户也是
member。因此,如果我们将允许优先于拒绝。会员可以作为版主访问。除非,会员也被屏蔽
附言 我很清楚这个话题值得商榷。因此,事实会比意见和猜测更受赞赏(不是说不要)。
【问题讨论】: