我們目前工作的一個項目,其中主要的域對象是內容節點,我們使用的是ACL-like系統,其中層次結構中的每個節點都可以包含覆蓋或補充那些對父母的規則。例如,一切都基於角色和行爲。策略快速遍歷ACL
Node 1 - {Deny All, Allow Role1 View}
\- Node 2 - {Allow Role2 View}
\- Node 3 - {Deny Role1 View}
在這種情況下,規則將從上到下依次讀取,因此節點3只能由Role2查看。這個概念並不複雜。
檢索單個節點的規則可能會導致一些查詢,獲取所有父級,然後重新創建規則列表並對其進行評估,但是此過程可能非常麻煩,因爲層次結構可能會變得非常深,並且可能會有一個每個節點上都有很多規則。
我一直在思考與準備每當權限更改並將其傳播到一個更新的所有葉子節點可能被重新創建每個節點預先計算規則的表。
你認爲任何其他戰略,加快規則的檢索和計算的?理想情況下,它應該在單個查詢中完成,但樹並不是最好的結構。
非常有幫助的迴應,我想你是隱含地說:預先計算所有(在一個或多或少複雜的策略)。 – 2010-04-14 16:00:16
一點都不浪費,這很浪費。我的意思是懶惰地計算(根據需要計算並緩存結果)並使用觀察者模式來知道何時不推薦使用緩存的結果。 – 2010-04-14 17:09:00