忙著寫erp系統,對許可權管理有了點新的感悟。之前使用linux系統的時候,linux的許可權控制使用的就是:
r(讀許可權)==1;
w(寫許可權)==2;
x(執行許可權)==4;
擁有三種許可權就是7(4+3+1),rw就是3(2+1)。
這樣的方式對許可權管理倒是不錯,我也試著寫了等比權值的許可權管理。
許可權表:
乙個使用者可以擁有所有的這些許可權,如超級使用者,那麼他的權值就是30(16+8+4+2):
這個方法的關鍵就是,乙個可以將使用者的許可權值解析成許可權的集合的演算法。因為使用的等比為2的數列,實現起來倒不是很困難。我用php和python實現了:
php:
1python:function readpower($num,$list=array
())78//
求小於許可權值最大的權值數
9$i=$num/2;
10while ($i
17 }
1其他語言的實現也是同理。這裡的乙個關鍵就是,利用了二進位制的特性。($num & $num-1) == 0可以判斷乙個數是不是2的幾次方數。說個小例子就很好明白:def **(num,list=):23
if(num & num-1) ==0:45
return
list
67 i=num/2
8while i
9 i=i+1
10if((i & i-1) ==0):
1112
return **(num-i,list)
1314
8的二進位制是1000;
7的二進位制是0111;
8和7按位與的結果就是0。而,所有的2的幾次方數,都是1個1後邊跟一堆0。很好就可以判斷乙個數是不是2的幾次方數。
總結:關於角色控制許可權這一塊,也很好使用。完全可以讓乙個角色擁有乙個許可權值,表示他擁有的許可權集合。比如,我做的erp系統中就有普通使用者角色,他的許可權只有訂單管理和商品管理的許可權,所以按照我的例子,許可權值就是6。
我也是偶然想到這個辦法控制許可權,如果有什麼不妥之處,請指正。
嫡權法賦權法 1 熵值法賦權
一 基本原理 在資訊理論中,熵是對不確定性的一種度量。資訊量越大,不確定性就越小,熵也就越小 資訊量越小,不確定性越大,熵也越大。根據熵的特性,可以通過計算熵值來判斷乙個事件的隨機性及無序程度,也可以用熵值來判斷某個指標的離散程度,指標的離散程度越大,該指針對綜合評價的影響 權重 越大,其熵值越小。...
Ant Design Pro 鑑權 許可權管理
ant design pro 1.0.0 v4 最近需要專案需要用掃碼登入,因此就使用antd pro提供的鑑權能力來做 authorized.ts 提供初始化路由元件和過載路由的函式 import renderauthorize from components authorized import ...
數模演算法 熵權法(用於客觀確定權值)
根據資訊熵的定義,對於某項指標,可以用熵值來判斷某個指標的離散程度,其熵值越小,指標的離散程度越大,該指針對綜合評價的影響 即權重 就越大,如果某項指標的值全部相等,則該指標在綜合評價中不起作用。按照資訊理論基本原理的解釋,資訊是系統有序程度的乙個度量,熵是系統無序程度的乙個度量 如果指標的資訊熵越...