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

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

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

    posts - 193,  comments - 520,  trackbacks - 0
    什么是權限系統,權限系統究竟在整個系統中起到什么作用,或者說權限系統必須提供哪些功能?
    談談個人的看法,我認為授權和驗證是一個權限系統最基本的功能,而一個更完善的權限系統會增加上如何驗證和驗證后如何處理這兩種功能。
    對于一個權限系統的基本元素,我覺得只有兩個:Principal(權限主體),權限。用戶,用戶組,角色等都可以抽象為權限主體這個概念;而權限則是資源+操作的抽象。權限可分為兩種,一種純粹就是資源,沒有操作,也可以認為是默認操作;另外一種就是帶操作的資源。授權本身沒有什么說的,賦予權限主體權限;驗證簡單的說就是傳入權限主體和當前操作需要的權限,然后驗證返回說可以操作或是不可以操作yes/no。同時要注意的是驗證的時候需要一個類(接口)來返回用戶當前所擁有的權限,然后與當前操作需要的權限進行比對,最后返回比對結果。
    以acegi為例,下面分開來說明:
    首先,acegi是沒有授權功能的,它簡單把權限主體與資源配置在了xml里,當然這也帶來了可擴展性,可以看一個配置:
    ????????????????/index.jsp=ROLE_ANONYMOUS,ROLE_USER
    ????????????????/hello.htm=ROLE_ANONYMOUS,ROLE_USER
    ????????????????/logoff.jsp=ROLE_ANONYMOUS,ROLE_USER
    ????????????????/switchuser.jsp=ROLE_SUPERVISOR
    ????????????????/j_acegi_switch_user=ROLE_SUPERVISOR
    ????????????????/acegilogin.jsp*=ROLE_ANONYMOUS,ROLE_USER
    ????????????????/**=ROLE_USER

    /index.jsp,/hello.htm這些URL都是資源,因為它默認的操作就是訪問,所以訪問特定URL就成了一個權限,ROLE_ANONYMOUS,ROLE_USER無疑就是權限主體。
    Acegi對方法訪問權限的配置也是和上面一樣的。
    然后,看看acegi的驗證,其實它的驗證就是一個個的Voter,當你訪問一個方法時,由它獲得當前用戶和需要的權限(就是該方法),然后返回yes/no。
    OK,這就是一個完整的權限系統了。當然acegi如果僅僅提供上面兩個基本功能,它是不會向現在這樣成功的,它最大的亮點就是提供了如何驗證和驗證后如何處理這兩種功能。對url它提供了filter,方法也一樣提供了Interceptor,這就是如何驗證,和我們在action里驗證沒有任何區別,只是換了一種方式而已。然后它驗證后的處理方式:yes就繼續往下執行,no就拋出異常最后再處理這個異常。我們在執行每個action前同樣也可以做到這一點。
    這里著重要提到的是數據權限。比如說A只能對部門A下的數據有查看權限,B可以對部門A的數據有修改權限和對部門B的數據的查看權限。
    看起來這個需求是比較麻煩的,但是我們可以按上面說的拆分以下:
    資源1:部門A下的數據? ;資源2:部門B下的數據
    操作1:查看;??? 操作2:修改
    產生四種權限:
    權限1:資源1+操作1 ;權限2:資源1+操作2;權限3:資源2+操作1;權限4:資源2+操作2
    權限主體A擁有權限:1 ; 權限主體B擁有權限:2,3
    這樣就非常清晰了。
    總結:我始終認為擁有授權和驗證功能就完成了一個完整的權限系統。至于如何去校驗權限,不管你是filter還是aop那是具體實現時的細節,采取的不同策略。而驗證后的處理則是和不同策略相對應的。在你考慮設計一個權限系統時首先考慮的是如何實現授權和驗證,而不是一開始就考慮我是采取filter,還是aop,還是動態改變sql。
    謝謝wolfsquare,它的blog相關

    http://www.tkk7.com/ronghao 榮浩原創,轉載請注明出處:)
    posted on 2007-03-21 19:04 ronghao 閱讀(4154) 評論(1)  編輯  收藏 所屬分類: 權限相關

    FeedBack:
    # re: 對權限系統設計的再思考
    2007-03-22 18:36 | dreamstone
    權限設計是個麻煩的問體,特別是國內項目.  回復  更多評論
      
    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    關注工作流和企業業務流程改進。現就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

    常用鏈接

    留言簿(38)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    常去的網站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日韩小电影在线观看| 亚洲最大av无码网址| 亚洲最大免费视频网| 永久在线观看www免费视频| 亚洲高清免费在线观看| 最近2019免费中文字幕视频三| 亚洲综合精品香蕉久久网97| 91久久青青草原线免费| 亚洲精品伊人久久久久| 日本一道一区二区免费看 | 亚洲一区二区精品视频| 有码人妻在线免费看片| 亚洲日韩精品一区二区三区无码| 波多野结衣免费一区视频| 久久亚洲中文字幕精品有坂深雪| 最近2022中文字幕免费视频 | 亚洲欧洲无码AV不卡在线| 国产美女无遮挡免费视频网站 | 亚洲av日韩精品久久久久久a| 国产在线观看www鲁啊鲁免费| 一级一级毛片免费播放| 久久亚洲免费视频| 中字幕视频在线永久在线观看免费| 亚洲国产一区二区三区在线观看| 亚洲AV无码一区二区三区国产| 97在线免费视频| 亚洲五月丁香综合视频| 亚洲精品无码激情AV| 免费国产黄网站在线观看视频| 亚洲色大成网站www| 自拍偷自拍亚洲精品情侣| 亚欧人成精品免费观看| 免费无码AV一区二区| 亚洲国产精品无码专区在线观看| 中文字幕无码视频手机免费看| 色爽黄1000部免费软件下载| 亚洲乱亚洲乱淫久久| 又大又硬又爽免费视频| 最近免费视频中文字幕大全| 国产亚洲精品美女久久久久| 91亚洲精品视频|