兩個關於許可權設定的問題思考

jeanron100發表於2018-03-28

最近這兩天做動態選單和許可權校驗,想到了兩個有意思的問題。

第一個是對於一個使用者的操作許可權,無非就是這四個方面,增刪改查。

如果透過字母來標識,可能就是增(I)刪(D)改(U)查(S)

那麼一個使用者或者表所擁有的許可權就可能有IS,IDUS,IDU類似這樣的組合,其實如此一來會把我們已有的方式打亂,因為4個元素的組合,考慮到順序,其實有很多,比如2個連續,3個連續,順序不一樣。

所以如果使用一個欄位來校驗區別,採用字元的形式,其實還是很難,很容易出錯,比如ISU, SUI都代表的是一個含義,但是有多種組合方式。

或者換個思路,如果我使用4個欄位來區別校驗,分別為增刪改查,問題似乎會迎刃而解,事實上我們就需要在4個欄位間進行大量的組合,語句可能會很囉嗦。有的同學想使用類似 in ('select','insert','delete','update')的形式來校驗,但是顯而易見,這種方式無法定位邊界,比如select+insert+update和select+insert+update+delete在上面的情況都會正常返回結果。

所以能不能用一個欄位來標示這個問題呢,我想了一個。

比如增刪改查,按照權重,其實應該是select,insert,update,delete這樣的權重,如果我們制定為1,2,3,4的話,很容易混淆,比如是4,可能是1+3,4的組合,這樣就不好判斷到底是擁有哪些許可權。

所以我們需要區別對待,借用了人民幣的思路。人民幣我們知道有1元,兩元。五元,十元。所以我們按照這個方式來組合就會好很多,權重值為:

select(1)

insert(2)

update(5)

delete(10)

但是實際上許可權在業務中是有組合關係的,會有如下的幾種組合。

比如

select

insert+select

delete+select

update+select

select+insert+update

select+insert+update+delete

其實組合就這些,按照權重組合就是:

select 1

insert+select 3

delete+select 11

update+select 6

select+insert+update 8

select+insert+update+delete 18

所以我們得到一個數字,就知道它確切的許可權了,在做處理的時候就很容易了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2152360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章