<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    設計及設計模式:關于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;
    }

      當然,多權限的驗證只要擴展一下就可以了。

      幾點注意事項:首先,一個系統可能有很多的操作,因此,請建立數據字典,以便查閱,修改時使用。其次,如果用數據庫儲存用戶權限,請注意數值的 有效范圍。操作權限值請用唯一的整數!Java的int類型最多可以儲存11個權限和.如果超過,可以選擇其它數據類型,而且建議不同模塊,使用多個權限 變量.

    posted on 2008-03-09 20:32 gembin 閱讀(527) 評論(0)  編輯  收藏 所屬分類: JavaSE

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 两个人看的www视频免费完整版| 亚洲色最新高清av网站| 久久99精品免费一区二区| 国产人成免费视频| 深夜久久AAAAA级毛片免费看| 好男人www免费高清视频在线| 免费看国产精品麻豆| 色天使亚洲综合一区二区| 俄罗斯极品美女毛片免费播放| 老子影院午夜伦不卡亚洲| 国产99视频免费精品是看6| 瑟瑟网站免费网站入口| 国产成人精品日本亚洲专区| 成人自慰女黄网站免费大全| 亚洲gv白嫩小受在线观看 | 日本一区二区在线免费观看| 亚洲午夜无码片在线观看影院猛 | 亚洲av再在线观看| 亚洲色WWW成人永久网址| 手机看片国产免费永久| 亚洲视频在线免费观看| 在线视频观看免费视频18| 亚洲国产成人无码AV在线| 国产h肉在线视频免费观看| 亚洲AV日韩综合一区尤物| 四虎国产精品免费久久影院| 中文字幕免费观看视频| 亚洲沟沟美女亚洲沟沟| 色www永久免费视频| 亚洲ts人妖网站| 免费在线观看黄网站| 在线人成免费视频69国产| 精品亚洲成在人线AV无码| 亚洲乱码中文字幕手机在线| 免费A级毛片无码A∨中文字幕下载| 亚洲国产精品综合久久20| 亚洲精品夜夜夜妓女网| 久久久久久免费视频| 国产高清对白在线观看免费91| 久久精品国产亚洲av影院| 四虎影视在线永久免费观看|