<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)計(jì)

    公告

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

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個(gè)人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

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

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

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

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

    在等級(jí)權(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)限等級(jí)

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

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

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

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

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

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

    領(lǐng)域?qū)ο箜?xiàng)目類Project的基本屬性如下:
        id       // 項(xiàng)目ID
        name     // 項(xiàng)目名

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

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

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

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

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

    領(lǐng)域?qū)ο箜?xiàng)目類Project的基本屬性如下:
        id        // 項(xiàng)目ID
        name      // 項(xiàng)目名

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

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

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

    ...

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

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

     

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

    評(píng)論

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

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

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

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

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

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

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

    @一農(nóng)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    以上沒(méi)說(shuō)完
    在resource 給url 比如:/new/*.do
    通過(guò) 過(guò)濾器 控制。

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

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

    不錯(cuò)的文章!  回復(fù)  更多評(píng)論   

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

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

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

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

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

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

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

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

    sitinspring(http://www.tkk7.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
    主站蜘蛛池模板: 久久综合国产乱子伦精品免费| 久久久久亚洲爆乳少妇无| 无码国产精品一区二区免费式芒果| 亚洲精品国产精品| 亚洲午夜久久久久久尤物| 亚洲AV午夜成人影院老师机影院 | 亚洲AV无码成H人在线观看| 57pao一国产成视频永久免费 | 高清在线亚洲精品国产二区| 99久久久精品免费观看国产 | 亚洲国产第一页www| 精品亚洲一区二区三区在线播放| 免费特级黄毛片在线成人观看| 亚洲免费一级视频| 久久久久国产精品免费看| 成全视成人免费观看在线看| 无遮挡国产高潮视频免费观看| 亚洲av乱码一区二区三区按摩| 亚洲国产日韩综合久久精品| 亚洲性猛交xx乱| 亚洲成AV人片久久| 亚洲啪啪免费视频| 亚洲成a人片毛片在线| 亚洲福利一区二区三区| 在线观看亚洲人成网站| 亚洲a在线视频视频| 亚洲图片在线观看| 久久精品国产亚洲AV香蕉| 18亚洲男同志videos网站| 亚洲黄色片免费看| 亚洲视频网站在线观看| 亚洲图片激情小说| 亚洲免费视频观看| 亚洲综合无码无在线观看| 最新亚洲春色Av无码专区| 亚洲av成人一区二区三区在线播放| 亚洲色精品三区二区一区| 亚洲av午夜电影在线观看| 免费福利在线观看| 不卡视频免费在线观看| 日本一道本不卡免费 |