我有一個MySQL數據庫表像的下面,資源表:PHP MySQL的Zend公司的ACL - 以圖形方式顯示ACL:
+----+-----------+------------+
| id | name | type |
+----+-----------+------------+
| 1 | guest | user |
| 2 | member | user |
| 3 | moderator | user |
| 4 | owner | user |
| 5 | admin | user |
| 6 | index | controller |
+----+-----------+------------+
到下表中,規則表:
+----+---------+------+-------------+----------------------+
| id | user_id | rule | resource_id | extras |
+----+---------+------+-------------+----------------------+
| 1 | 2 | 3 | 1 | null |
| 2 | 3 | 3 | 2 | null |
| 3 | 4 | 3 | 3 | null |
| 4 | 5 | 3 | 4 | null |
| 5 | 6 | 1 | 1 | index,login,register |
| 6 | 6 | 2 | 2 | login,register |
| 7 | 6 | 1 | 2 | logout |
+----+---------+------+-------------+----------------------+
OK,遺憾的長度,但我TR讓我全面瞭解我想要做的事情。 所以它的工作方式,角色(又名用戶)可以授予(規則:1)訪問控制器,一個角色可以繼承(規則:3)從另一個角色訪問或一個角色並被拒絕(規則:2)訪問控制器。 (A 用戶是資源和控制器是一個資源)
訪問操作被授予使用所述額外柱/拒絕。
這一切都有效,它在zend中設置ACL時不存在問題。
我現在試圖做的是顯示關係;要做到這一點,我需要找到最低級別的角色被授予訪問控制器,如果它已明確被刪除,停止。我計劃列出角色。當我點擊角色時,我希望它顯示角色有權訪問的所有控制器。然後點擊一個控制器會顯示該角色被允許執行的操作。
所以在上面的例子中,guest允許查看索引控制器的索引操作以及登錄操作。 成員繼承相同的訪問權限,但拒絕訪問登錄操作和註冊操作。 主持人繼承成員的規則。
所以,如果我選擇角色主持人。我想看到列出的控制器索引。如果我點擊控制器,它應該顯示允許的操作爲操作:索引。 (最初授予客人,但此後並未被解除)
是否有任何這樣做的例子。我顯然正在使用Zend MVC(PHP)和MySQL。 即使只是一個persudo代碼示例將是一個有用的起點 - 這是我拼湊在一起的拼圖的最後部分之一。
P.S.很明顯,我有ACL對象 - 這會更容易插入,還是更好地通過PHP/MySQL來完成我的自我?
目標是,顯示一個角色可以訪問的角色,然後允許我添加或編輯GUI風格的角色,控制器和動作(這有點簡單) - 目前我正在更新數據庫手動,因爲我一直在建設該網站。