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

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

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

    隨筆-11  評論-16  文章-1  trackbacks-0
    -------------------------------------------- 總大綱 ---------------------------------
    Ralasafe開源有段時間了,大約有2個月了。根據社區的反饋,我打算圍繞Ralasafe最佳實踐,書寫一系列BLOG。

    大體內容有:
    1, 登錄控制: 哪些頁面需要登錄后才能訪問,登錄用戶名、密碼驗證,登錄轉向頁面;
    2, URL權限控制:哪些頁面訪問需要進行角色權限驗證,怎樣驗證最簡單有效,如何處理驗證失敗情況;
    3, 數據級權限管理方案探討:選擇中間件呢還是框架?
    4, Ralasafe體系結構: 用戶怎么讀取,用戶有哪些字段,怎樣與應用基礎;
    5, 數據級查詢權限管理: 如何給不同的人分配不同的查詢數據權限,返回where條件呢,還是直接返回結果集?
    6, 數據級決策權限管理: 如何給不同的人分配不同的數據操作權限,當用戶不具備權限怎么辦?
    7, 其他細小的權限控制: 如下拉框顯示內容;按鈕、鏈接是否顯示,圖片是否顯示等。
    -------------------------------------------- ------- --------------------------------

    今天說的URL權限控制,內容主要有:URL權限控制,當用戶訪問某URL時,進行角色權限驗證。如果有相應權限,則允許其正常訪問;否則,轉到拒絕頁面。
    我們依然通過一個Filter來實現,這樣就無需在代碼中增加權限判斷,也無需套用任何框架。對于整個權限管理系統來說,本節內容也非常簡單。

    理論分析

    當軟件實施人員進行系統實施的時候,會將一些訪問菜單定義為權限。然后定義角色,讓角色擁有權限。然后再將權限賦給用戶。
    所以,當用戶請求某個URL的時候,要不該URL需要權限驗證,要不就是不需要權限驗證。
    檢驗標準就是:看權限表里面有沒有該URL。檢驗的時候,唯一需要注意的是:URL參數,比如employeeManage?op=add。

    數據庫模型

    權限表:id<int>,name<varchar>,url<varchar>,description<varchar>   | pk(id)
    角色表:id<int>,name<varchar>,description<varchar>                        | pk(id)
    角色-權限關系表:roleId<int>,privilegeId<int>                                       | pk(roleId,privilegeId)
    用戶-角色關系表:userId<int>(根據你系統的情況,也可能是varchar等),roleId<int> | pk(userId,roleId)

    Ralasafe方案

    Ralasafe權限管理中間件(下載地址),既可以管理和控制功能級權限,也可以管理和控制數據級權限。開發者還可以根據需求,只選擇功能級控制,或者只選擇數據級控制。

    安裝好用戶元數據的時候,Ralasafe自動創建所有權限表。相關權限數據,都由Ralasafe界面進行管理(即錄入)。

    Ralasafe的管理界面,在功能權限方面可以做到:
    1,管理權限界面;
    2,管理角色界面,并給角色賦權限;
    3,給用戶分配角色界面。這里還需要注意:不同用戶管理可以給不同范圍的用戶分配角色。比如:總公司的管理員可以給所有人分配角色;分公司管理員可以給本分公司及下屬子公司用戶分配角色。

    Ralasafe將最后一點視為數據級權限。詳見:http://www.ralasafe.org/zh/guide/reference/safe.html#ralasafehttp://www.ralasafe.org/jforum/posts/list/11.page


    org.ralasafe.webFilter.UrlAclFilter配置到web.xml即可,而且配置工作量極其少。
    <filter>
        
    <filter-name>ralasafe/UrlAclFilter</filter-name>
        
    <filter-class>org.ralasafe.webFilter.UrlAclFilter</filter-class>
        
    <init-param>
            
    <param-name>loginPage</param-name>
            
    <param-value>/ralasafe/demo/login.jsp</param-value>
        
    </init-param>
        
    <init-param>
            
    <param-name>denyPage</param-name>
            
    <param-value>/ralasafe/demo/noPrivilege.jsp</param-value>
        
    </init-param>
    </filter>
    <filter-mapping>
        
    <filter-name>ralasafe/UrlAclFilter</filter-name>
        
    <url-pattern>/ralasafe/demo/*</url-pattern>
    </filter-mapping>

     
    該Filter具有這些功能:
    1,在用戶具有權限的時候,正常訪問;
    2,在用戶不具有權限的時候,轉到拒絕頁面;
    3,如果用戶沒用登錄,轉到登錄頁面,讓用戶先登錄。

    其他

    這里我簡單說說spring security。
    spring security在控制功能權限的時候,還會幫助開發人員控制Dao/Service等組件。我個人認為這種控制是多余的。
    因為,功能權限控制應該站在最終用戶角度進行考慮。Dao/Service等編程開發級的組件,并不是最終用戶關心的事情。所以無需進行功能權限控制。
    另外,大家在使用spring security,我建議將功能級權限控制放在數據庫里面,而不是annotation到java code里面。因為annotation到java code里面,最終用戶就不能控制了。

    注:ralasafe團隊博客在javaeye/baidu/blogjava等空間,同步發布。ralasafe官方網站:http://www.ralasafe.org/zh


    posted on 2010-09-02 21:55 細粒度權限管理 閱讀(2598) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品一区二区三区高清免费观看| 亚洲综合一区二区三区四区五区| 色吊丝免费观看网站| 国产精品视频永久免费播放| 亚洲视频在线观看免费视频| 日日麻批免费40分钟无码| 亚洲电影一区二区| 亚洲免费在线观看视频| 亚洲国色天香视频| 无码国产精品一区二区免费式直播| 精品一卡2卡三卡4卡免费视频| 亚洲最大激情中文字幕| 大地影院MV在线观看视频免费| 亚洲国产精品嫩草影院在线观看| 国产无遮挡无码视频免费软件| 亚洲电影中文字幕| 可以免费看的卡一卡二| 亚洲欧美日韩综合俺去了| 国产一级一片免费播放i| 老司机午夜性生免费福利| 国产亚洲精品免费视频播放| 久久久久久久99精品免费观看| 久久精品国产精品亚洲毛片| 在线观看免费高清视频| 亚洲AV无码国产精品麻豆天美| 亚洲AV无码AV男人的天堂| 午夜亚洲国产理论秋霞| 精品无码一区二区三区亚洲桃色| 午夜dj在线观看免费视频| 久久久久久免费一区二区三区| 特级av毛片免费观看| ASS亚洲熟妇毛茸茸PICS| 久久亚洲AV午夜福利精品一区| 国产成人免费A在线视频| 四虎永久成人免费| 一级毛片aaaaaa免费看| 最新亚洲人成无码网www电影| 亚洲一区日韩高清中文字幕亚洲| 亚洲AV午夜成人片| 亚洲免费网站观看视频| 中国好声音第二季免费播放|