2011-05-19 280 views
7

我正在使用一個像樹一樣的數據庫模式的網站。從上到下,我有:設計一個多級用戶權限系統

  • 一個公司可以有很多
  • 位置,可以有很多
  • 艦隊,可以有很多
  • 車輛

用戶權限系統具有靈活,因爲某人可以在樹的任何級別獲得或限制訪問權限。例如,一個管理位置x的人默認可以完全訪問位置x以下的所有車隊和位置x以下的所有車輛。但我也應該能夠限制用戶訪問位置x下的任何節點。

如何爲像這樣的權限系統開發模式的正確方法是什麼?存儲用戶有權訪問的每個節點是否現實?即使它有點冗餘?目標是讓我能夠輕鬆地運行查詢,例如獲取用戶有權訪問的所有位置。

+4

我沒有精力去寫一個完整的答案,所以我只會發表意見,而不是讓別人填補空白。剛剛描述的所有內容都可以通過使用ACL繼承來實現。訪問控制列表。您可以在ACL中將位置設置爲資源,您的車隊也可以成爲資源,您可以通過這種方式訪問​​用戶。或者,您可以使用嵌套集模型層次結構並完全忽略ACL,並僅允許用戶訪問樹中lFT和RGT值之間的節點。即SELECT *從位於4和54之間的位置開始。 – Layke 2011-05-19 23:01:23

回答