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

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

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

    春風(fēng)博客

    春天里,百花香...

    導(dǎo)航

    <2008年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    統(tǒng)計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    三種權(quán)限設(shè)計方案的歸納和比較

    權(quán)限設(shè)計是很多系統(tǒng)重要的組成部分,主要用于控制功能和流程,本文將幾種常見的權(quán)限設(shè)計方案(權(quán)限系統(tǒng)的名都是自己起的)的基本設(shè)計寫出來,其中不恰當(dāng)處還請大家指出,我們來討論一下.

    1.等級權(quán)限系統(tǒng)

        這種權(quán)限系統(tǒng)在論壇中很常見,在這種系統(tǒng)中,權(quán)限級別如同官階從低到高排列,每個用戶擁有一個權(quán)限,其中設(shè)定了這個用戶的權(quán)限等級,在用戶需要執(zhí)行操作前先查看其權(quán)限等級是否大于執(zhí)行操作所需要的權(quán)限等級,是則進(jìn)行操作。

    在等級權(quán)限系統(tǒng)中領(lǐng)域?qū)ο笥脩纛怳ser的基本屬性如下:
        id       // 用戶ID
        name     // 用戶名

    領(lǐng)域?qū)ο髾?quán)限類Privilege的基本屬性如下:
        id       // 權(quán)限ID
        userid   // 持有此權(quán)限的用戶id
        level    // 用戶的權(quán)限等級

    level的設(shè)置示例
    level 對應(yīng)可執(zhí)行的功能
    0 訪問
    1 可跟帖
    2 可創(chuàng)建主貼
    3 可刪除主貼
    4 可創(chuàng)建頻道
    5 可刪除頻道
    6 可查看用戶
    7 可分配用戶權(quán)限
    8 可修改用戶密碼
    9 可刪除用戶
    ...

    使用中,執(zhí)行一個操作比如創(chuàng)建主貼時,先從Session中取出用戶,然后按其id查出其對應(yīng)的權(quán)限等級,拿它和執(zhí)行創(chuàng)建主貼所需要的等級(3)進(jìn)行比較,高于則可進(jìn)行創(chuàng)建主貼操作,否則報告權(quán)限不夠.

    等級權(quán)限系統(tǒng)簡單易用,在如論壇等剛性控制系統(tǒng)中使用很好,但不適用于需要限制權(quán)限的范圍的場合。

    2.范圍限制權(quán)限系統(tǒng)

        等級權(quán)限系統(tǒng)系統(tǒng)的缺點是控制范圍過廣,比如一個論壇中有很多子論壇,一個子論壇的分版主同時也能對另一個同等級分論壇的帖子進(jìn)行控制,這在一定程度不合理,有越界的嫌疑,更好的做法是將版主權(quán)限控制在一版之內(nèi),這時我們可以采用范圍限制權(quán)限系統(tǒng). 這種權(quán)限系統(tǒng)在項目管理系統(tǒng)中很常見.

    在等級權(quán)限系統(tǒng)中領(lǐng)域?qū)ο笥脩纛怳ser的基本屬性如下:
        id       // 用戶ID
        name     // 用戶名

    領(lǐng)域?qū)ο箜椖款怭roject的基本屬性如下:
        id       // 項目ID
        name     // 項目名

    領(lǐng)域?qū)ο髾?quán)限類Privilege的基本屬性如下:
        id       // 權(quán)限ID
        userid   // 持有此權(quán)限的用戶id
        projectid // 此權(quán)限對應(yīng)的項目
        level     // 用戶的權(quán)限等級

    其中,通過引入了新屬性projectid,我們對權(quán)限的范圍進(jìn)行了有效限制,項目不同則權(quán)限等級再高也是無效,這樣就起到了限制權(quán)限能力范圍的作用.

    3.范圍限制單項權(quán)限系統(tǒng)

    在上面兩個權(quán)限系統(tǒng)中,權(quán)限高的自然能執(zhí)行權(quán)限要求低的操作,這樣做權(quán)力沒有細(xì)分,在有些場合并不合理,比如即使是董事長不可直接操作人事部的招聘任務(wù),他只對雇員去留有建議權(quán).對于這樣的場合我們需要使用范圍限制單項權(quán)限系統(tǒng).它的典型應(yīng)用如工作流和OA系統(tǒng)。

    在范圍限制單項權(quán)限系統(tǒng)中領(lǐng)域?qū)ο笥脩纛怳ser的基本屬性如下:
        id        // 用戶ID
        name      // 用戶名

    領(lǐng)域?qū)ο箜椖款怭roject的基本屬性如下:
        id        // 項目ID
        name      // 項目名

    領(lǐng)域?qū)ο髾?quán)限類Privilege的基本屬性如下:
        id         // 權(quán)限ID
        userid     // 持有此權(quán)限的用戶id
        projectid  // 此權(quán)限對應(yīng)的項目
        abilityid  // 權(quán)限控制能力id

    領(lǐng)域?qū)ο髾?quán)限控制能力類ability的基本屬性如下:
        id         // 控制能力ID
        item       // 控制能力子項

    item的設(shè)置示例
    item 對應(yīng)可執(zhí)行的功能
    0 讀
    1 寫
    2 查
    3 刪

    ...

    通過對權(quán)限能力的細(xì)分,用戶權(quán)限的控制粒度更細(xì)了,對功能和流程就能有更精確的把握,適用于復(fù)雜的場合.

    以上三種權(quán)限系統(tǒng)沒有優(yōu)劣之分只有適用場合的區(qū)別,前面的粗略但易于操作,后面的精確但失之煩瑣,在現(xiàn)實使用中我們應(yīng)該根據(jù)場合選擇合適的權(quán)限系統(tǒng).

     

    posted on 2008-04-10 10:20 sitinspring 閱讀(17703) 評論(15)  編輯  收藏 所屬分類: Object Orient Programming

    評論

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-10 15:39 Eric.Zhou

    寫的不錯,應(yīng)該研究一下RBAC  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-11 23:22 aier

    受教了.受教了.如果這篇文章是作者的原創(chuàng),我只能說你能把權(quán)限比較高深的東西用如此通俗易懂的方式表達(dá)出來,非人類也。感謝感謝。  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-12 12:39 一農(nóng)

    建議大家還是深入了解一下Acegi,Acegi設(shè)計的思路和樓主有所不同。在Acegi里有用戶,授權(quán),資源,以及在資源被訪問前進(jìn)行權(quán)限的檢查。一個用戶可以有多個授權(quán),一個授權(quán)可以對應(yīng)多種資源,而資源可以多種多樣。在Acegi的默認(rèn)實現(xiàn)了有url,方法,領(lǐng)域?qū)ο蟆6脩艉褪跈?quán)的關(guān)系,并不只是直接把授權(quán)交給用戶,還可以把授權(quán)分配給角色,給用戶組,給部門等,然后用戶和角色,用戶組,部門關(guān)聯(lián)起來,幾種分配方式可以配合使用。
    按照這種思路,采用不同的授權(quán)方式,應(yīng)該是可以用一套類似的程序,實現(xiàn)樓主所說的三種方式。  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-12 13:13 如坐春風(fēng)

    @一農(nóng)

    你說的用戶組,部門等組權(quán)限確實沒有納入考慮范圍內(nèi),這方面確實忽略了。  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-13 14:22 一手的小窩窩

    呵呵,我自己實現(xiàn)的話就用到了
    角色列表 N
    角色擁有權(quán)限 (這算是 N對M關(guān)系)
    權(quán)限列表 M ( 這里面指定訪問資源就比較明確)..

    最后用戶 指定其 角色即可..

    我的思路就是這樣..也是這樣做的.  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-13 21:06 beyond

    不錯,公司現(xiàn)在實習(xí)的項目就用到了上面講的三種權(quán)限.
    經(jīng)典,收藏.  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-14 13:29 think.gs

    ^_^,角色繼承一下會省去很多的麻煩哦!  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-14 14:59 lizhiyang

    權(quán)限控制中最基礎(chǔ)的就是操作,即web應(yīng)用中的url。
    可以給某個用戶直接賦予一些操作,讓他擁有這些動作的權(quán)限。這樣權(quán)限的配置會比較麻煩。于是就有了角色,讓不同的角色擁有不同操作,然后再給用戶賦予一個或多個角色,使其能擁有多個操作。這樣簡單的權(quán)限設(shè)計就出來了。
    如果要讓部門的管理員能修改本部門員工的權(quán)限,能在本部門內(nèi)增加、刪除員工,能在本部門下增加子部門。那就要增加一個域(其實就是范圍的集合)的概念了,將域賦予某個角色。比如:部門A的管理員a屬于角色AA,角色AA有增加、刪除員工的權(quán)限。為了讓管理員a不能在部門B下增加、刪除員工。于是就給管理員a所屬的角色AA賦予一個域。讓a只能在部門A下進(jìn)行操作。
    說的比較粗淺,希望大家指教。“一農(nóng)”說的還比較好,大家可以借鑒下他的想法。  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-16 11:09 yjx

    用戶表 user
    角色表 role
    權(quán)限表 resource
    角色-權(quán)限 role_resource  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-04-16 11:12 yjx

    以上沒說完
    在resource 給url 比如:/new/*.do
    通過 過濾器 控制。

    還可以把 角色表做成 2級(3級)表(給父role id)  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2008-09-10 15:45 Fingki.li

    不錯的文章!  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2009-12-29 17:23 天雪

    你的這三個設(shè)計手法,真的讓人很無奈,你不會用AOP技術(shù)去做嗎?這樣就把底層也封裝好了。  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較 2010-01-14 18:54 自我的閑人

    說的很不錯,但我認(rèn)為最后第三種權(quán)限管理應(yīng)該稱為:單項限制權(quán)限管理系統(tǒng)
    具體的方式為某用戶是否具有某個功能的某種操作權(quán)
    應(yīng)建立empower權(quán)限表
    id
    userid
    em1
    em2
    em3
    .......
    以確定該用否是否具有某功能操作權(quán)。  回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較[未登錄] 2010-06-02 16:34 呵呵

    @自我的閑人
      回復(fù)  更多評論   

    # re: 三種權(quán)限設(shè)計方案的歸納和比較[未登錄] 2010-06-02 16:36 呵呵

    發(fā)現(xiàn)了。。大部分人說的都是RBAC原理。。<基于角色的權(quán)限控制>  回復(fù)  更多評論   

    sitinspring(http://m.tkk7.com)原創(chuàng),轉(zhuǎn)載請注明出處.
    主站蜘蛛池模板: 成年丰满熟妇午夜免费视频| 亚洲精品亚洲人成在线播放| 毛片免费观看的视频在线| 你懂的网址免费国产| 久久亚洲欧美国产精品| 亚洲嫩草影院在线观看| 婷婷亚洲久悠悠色悠在线播放| 亚洲国产中文字幕在线观看| 四虎免费在线观看| 国产va免费精品观看精品| 蜜臀AV免费一区二区三区| 国产午夜免费高清久久影院| 一个人看的hd免费视频| 精品在线观看免费| 亚洲AV无码成人精品区日韩 | 高h视频在线免费观看| 亚洲日本在线电影| 亚洲一区二区三区免费观看| 久久久久久亚洲精品成人| 亚洲国产成人片在线观看| 国产aⅴ无码专区亚洲av麻豆| 亚洲AV无码一区二三区| 国产91在线免费| 国产精品免费_区二区三区观看 | 亚洲乱码一区av春药高潮| 亚洲国产精品久久网午夜| 亚洲无圣光一区二区| 亚洲酒色1314狠狠做| 666精品国产精品亚洲| 亚洲自偷自拍另类12p| 久久精品国产亚洲AV高清热| 久久99亚洲网美利坚合众国| 91精品国产亚洲爽啪在线影院| 亚洲av日韩综合一区在线观看| 亚洲国产精品成人精品无码区 | 羞羞漫画小舞被黄漫免费| 特级毛片免费播放| 一级毛片视频免费| 色www永久免费| 24小时日本韩国高清免费| 国产1000部成人免费视频|