兩個關於許可權設定的問題思考
最近這兩天做動態選單和許可權校驗,想到了兩個有意思的問題。
第一個是對於一個使用者的操作許可權,無非就是這四個方面,增刪改查。
如果透過字母來標識,可能就是增(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於公司程式碼許可權的問題
- [BUG反饋]許可權條目中缺少兩個公開方法的許可權設定
- 關於許可權系統的一些思考
- postgresql關於訪問檢視需要的許可權SQL
- MySQL許可權問題MySql
- 選單許可權和按鈕許可權設定
- 許可權的級聯問題
- 關於系統許可權的設計-位操作
- 關於動態許可權
- 關於mysql許可權管理MySql
- ubuntu 許可權管理設定Ubuntu
- 記一次 Laravel日誌許可權許可權問題(定時器導致)Laravel定時器
- Centos sudo 許可權問題CentOS
- postgresql關於許可權的總結SQL
- jenkins 容器內的許可權問題Jenkins
- sqlserver 賦予許可權的問題SQLServer
- 小程式許可權設定(位置)
- Linux 如何設定特殊許可權?Linux
- win10 資料夾許可權怎麼設定_win10如何設定資料夾訪問許可權Win10訪問許可權
- 如何讓設定更“值錢”?或許該思考這幾個問題
- NAS使用者許可權的設定
- Ubuntu 下 Composer 許可權問題Ubuntu
- 修改 VOLUME 自動建立預設許可權問題
- 後臺許可權設計問題,請教思路
- 金山文件怎麼設定編輯許可權 金山文件線上編輯許可權設定
- Laravel 框架的日誌許可權問題Laravel框架
- Grafana9的dashboard許可權問題Grafana
- 許可權系統:6個許可權概念模型設計模型
- 關於dcat-admin的兩個問題...
- Vue設定許可權列表目錄Vue
- 基於RBAC的許可權設計模型模型
- 關於IPC和PTH使用者許可權問題,psexec拒絕訪問(Access Denied)的原因
- Mysql資料庫許可權問題MySql資料庫
- hdfs檔案本地許可權問題
- Laravel Daily 日誌許可權問題LaravelAI
- vue許可權問題解決方案Vue
- 釋出文章中的 EditorForAdmin外掛 訪問許可權如何設定訪問許可權
- MySQL儲存過程的許可權問題MySql儲存過程