Java権限制御アルゴリズムについて
, Linux 。
a^b :a b
, , :
A---0
A---1
A---2
B---3
B---4
B---5
。。。
N , 。
, : A---2; B---3; B---4
purview =2^2+2^3+2^4=28, 2
11100
B , 。
Java , &
:int value = purview &((int)Math.pow(2,3));
, , !
:
, :
:purview &2^3 28&8
11100
& 01000
-------------------
01000 == 8( ) == 2^3
, A---0
:purview &((int)Math.pow(2,0));
:
11100
& 00001
------------------------
00000 == 0( ) != 2^0
。 N , N .
A---0 B---3
purview&(2^0+2^3)==(2^0+2^3)?true:false;
。 。。。
java :
//userPurview
//optPurview ( !)
public static boolean checkPower(int userPurview, int optPurview){
int purviewValue = (int)Math.pow(2, optPurview);
return (userPurview &purviewValue) == purviewValue;
}
もちろん、マルチ権限の検証は拡張すればいいです.
いくつかの注意点:まず、1つのシステムには多くの操作がある可能性があります.そのため、データ辞書を作成して、調べたり、修正したりするときに使用してください.次に、ユーザー権限をデータベースに格納する場合は、数値の有効範囲に注意してください.操作権限値は一意の整数でお願いします.Javaのintタイプは最大11個の権限と.超える場合は他のデータ型を選択し,異なるモジュールで複数の権限変数を使用することを提案する.
原文の出典http://soft.chinabyte.com/database/206/11432206.shtml