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