1. 程式人生 > >複雜資料許可權設計方案

複雜資料許可權設計方案

需求:有個許可權樹,資源掛在樹的節點上面。父節點的許可權可以訪問所有子節點的資源。

更具體點,一個公司有一個部門,這個部門是棵樹(許可權樹)。每釋出一個課程,都需要設定屬於哪個部門的許可權。每個人屬於部門。這樣,來一個人,他可以看到該部門所有子部門的所有資料。

方案1:基於資料庫的實現

計算機生成了可選文字:

這是一棵許可權樹。子節點的值為父節點copy+一個遞增的數字。

資源的表有個欄位儲存節點的數字。

當用戶許可權在某個節點的時候,使用mysql   like 'X%'  就可以找到下面的所有的資源。

方案2:

使用搜索引擎實現。

計算機生成了可選文字:

資源a掛在1上,a的標籤是[1];資源b掛在2上,標籤是[12

使用者許可權是1,可以找到ab的資源。如果使用者許可權是2,用2搜尋,可以找到b的資源

標籤:就是從根到當前節點的路徑。中間用,或者空格分割,這樣es就可以分詞。

方案12各有千秋。方案1 在多表join的時候,比較方便。實際業務場景除了許可權做過濾,還有其他的搜尋條件。