我仍然在我的ACL項目中工作,並且想要針對以下問題的一些想法:ACL建模 - 如何管理訪問控制列表的「層次結構」?
我正在使用MySQL來存儲我的用戶,角色和權限。起初,我在我的TABLE角色中創建了一個字段「parent_id」,並試圖通過這個來管理每個用戶的權限。這是一種有效的工作,直到我意識到如果我添加一個新角色,管理層次結構和控制誰可以訪問哪些資源非常複雜。我做了一些搜索,發現使用關係數據庫處理層次結構非常複雜,所以我放棄了使用層次結構。
我想你的幫助找到管理用戶創建的最佳解決方案: 我有4個不同的用戶:SuperAdmin,CustomerAdmin,Technician,client。 當我在頁面中創建新用戶時,我不想讓技術人員創建類型爲CustomerAdmin或SuperAdmin的新用戶。
我認爲只讓SuperAdmin創建一個新用戶,但我的一個約束是我必須讓CustomerAdmin也創建用戶,也是技術人員。
爲了更有說服力,SuperAdmin可以成爲我。客戶管理員是我的客戶,他有一個企業。在他的企業中,他可以創建兩種類型的用戶:技術人員和客戶。
這只是一個例子,但是如果我想創建一個新的角色給他新的權限,我必須找到一種方法來拒絕他創建比他更強大的用戶的權限。
我不確定我的問題是否客觀,但任何能夠與我討論此事的人都會受到歡迎。
根據關係數據庫的性質來建模樹是非常困難的,但它並不適合在單個查詢中對數據結構進行建模。我之前在PostgreSQL中使用了所謂的物化路徑,但是我的實現使用了MySQL缺少的一些功能。我使用了所謂的物化路徑,並使用可寫視圖+ ltree來實現它。用MySQL做這件事的最好方法很可能是將數據拉出並通過遍歷數據來構建樹,儘管在PHP中構建樹型數據結構會讓我不寒而慄。 – hsanders
我明白了你的意思..但我真的必須找到一種方法來以最簡單的方式解決這個問題..它不應該是這個怪物 – Periback