邏輯卡住點。我正在構建一個簡單的ACL,我只是感到困惑。我只是想以正確的方式做到這一點。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或拒絕第一。哪個應該優先考慮?
尋找到這個
- 雖然拒絕用戶的編輯從某種角度來說,他作爲主持人被允許訪問該地區。
- 儘管主持人被允許訪問資源,但所有編輯者都受到限制。
- 不要忘記用戶也是
member
。所以如果我們優先考慮允許拒絕。會員將可以作爲主持人訪問。除非,成員也被屏蔽
P.S. 我很清楚這個話題是有爭議的。所以,事實將不勝感激(不說)超過意見和猜測。
我只關注創建一個默認的允許,是,將有更少的表上的條目。但你提出了一個很好的觀點......我需要更多的迴應來明確這個話題。 (+1) – Starx 2012-01-04 03:15:33
好吧,我要防止默認情況下,但應'允許'覆蓋'拒絕'?你有什麼話要說? – Starx 2012-01-04 10:57:52
如果您在默認情況下阻止,權限的默認狀態是「軟」拒絕。這通過明確的「允許」授予來覆蓋。明確拒絕必須重寫允許才能在這種情況下始終如此有用。另外,請記住,默認情況下未授予權限時,顯式拒絕使用往往會相對較少。明確否認的最常見用法之一是列入黑名單,如果拒絕被允許超過,這是不可能的。 – 2012-01-04 12:45:12