請教:一個關於行級資料許可權模型的問題

pushboy發表於2006-05-28
正好最近在做一個許可權系統,有一個很撓頭的問題請教,就是關於行級資料許可權的控制問題。
簡單的說,將許可權控制到資料庫裡同一張表的記錄。比如一張費用報銷表,裡面的報銷金額可能從1-100W,專案經理、部門經理、CEO都有審批的許可權。對於1- 1W的報銷額度,需要專案經理審批,1W-10W的額度,需要部門經理審批,10W-100W的需要CEO審批,而這個額度規定也是可以修改的。我希望可以在業務層進行驗權,而不是在UI層。因為對於上述幾個使用者而言,他們都是有權進入這個審批頁面,所不同的是,只能在各自額度範圍內進行操作。
這樣的一個許可權對應怎麼建立呢?

我原來的方案是-暫不考慮角色、使用者組等,先看一個最簡單的模型,如附件:
1、有一個許可權專案表,裡面記載了實體物件和操作,它和使用者表關聯成為一個授權表,驗權時候根據使用者、物件、操作檢查這張表;
2、對於這每一條記錄給他歸類,比如叫 費用報銷1-1W,費用報銷1W-10W,費用報銷10-100W(大概的意思),然後把每一個分類作為一個許可權專案裡面的實體物件對待;這樣,授權和驗權與上面一致;
3、但是問題是,對於這樣的資料如何歸類?歸類操作在什麼時候,由誰來作?4、這樣的歸類,對於業務系統而言,是否一場災難?因為每一條記錄最少屬於一個類別,甚至更多。那麼這張資料歸類表的資料豈不最少要和源資料表一樣多? - 圖即附件2的“資料分類2”
5、如果在每一條記錄後加多一個屬性"資料分類",圖見附件3的"資料分類1"。則資料量減少,但是如果每條記錄允許屬於多個分類,那麼這個屬性就是分類的集合字串,值如"分類1,分類2,分類3"。
6、在這樣的一個模型裡面,考慮更復雜的情況,如一條資料,屬於"分類1"和"分類2",而一個使用者對"分類1"專案有操作許可權,而對於"分類2"專案沒有操作許可權,那麼,這時候,是允許使用者操作這條資料,還是不允許?

我現在已經暈掉了,哪位老大做過類似模型的,請不吝賜教
多謝多謝

相關文章