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

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

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

    隨筆-54  評論-0  文章-2  trackbacks-0
     接著昨天的實現將攔截的url,權限信息,用戶信息放到數據庫中,并將spring-security集成到項目中

    1. 實現資源信息存放到數據庫中:

    訪問資源時, spring-security 能區分出訪問該資源需要哪些權限
      1. 自定義ObjectDefinitionSource 接口的實現類, 將該類的實例裝配給 FilterSecurityInterceptor 的 objectDefinitionSource 的屬性. 即可實現自定義的資源獲取.

      2. 通過繼承 DefaultFilterInvocationDefinitionSource 類的方法定義ObjectDefinitionSource 接口的實現類有困難, 因為 DefaultFilterInvocationDefinitionSource中沒有無參的構造器

       3.通過查看 spring-security 核心 jar 包的 META-IN 下 的 spring.handlers 找到 SecurityNamespaceHandler, 在該類中查看 registerBeanDefinitionParser(Elements.HTTP, new HttpSecurityBeanDefinitionParser()); 方法在 HttpSecurityBeanDefinitionParser 類中可以看到如何創建 DefaultFilterInvocationDefinitionSource 實例.

       4. 通過 FactoryBean 在 IOC 容器中注冊  DefaultFilterInvocationDefinitionSource 實例   

       5. 實現ResourceDetailsService 接口    

    2.關于MD5加密:

    1.網上的關于MD5已經很多了,MD5算法對密碼進行摘要加密,這是一種單項加密手段,無法通過加密后的結果反推回原來的密碼明文。

    為了使用MD5對密碼加密,我們需要修改一下配置文件
    <authentication-provider>
        <password-encoder hash="md5" >
        <jdbc-user-service data-source-ref="dataSource" >
    < authentication-provider>  
    上述代碼中新增的黃色部分,將啟用md5算法。

    3.管理會話(HttpSession)
        多個用戶不能使用同一個賬號同時登陸系統。
    添加監聽器
    在web.xml中添加一個監聽器,這個監聽器會在session創建和銷毀的時候通知Spring Security。
    這種監聽session生命周期的監聽器主要用來收集在線用戶的信息,比如統計在線用戶數之類的事。后登陸的將先登錄的踢出系統默認情況下,后登陸的用戶 會把先登錄的用戶踢出系統。

    ============================================================================================
                                  集成spring-security框架

    1. 集成 spring-security 框架

        1. 加入 spring-security 的兩個 jar 包
        2. 在 web.xml 文件中加入加入 spring-security 框架的過濾器
        3. 新建 applicationContext-security.xml 配置文件,并且把 security 作為默認的命名空間, 并將其導入到 applicationContext.xml 中
        4. 設計領域模型:
           Authority -- 權限
           Resource -- 資源
           Role -- 角色
           Employee -- 添加 Set<Role> roleSet 屬性

           Resource 和 Authority 為多對多的對應關系
           Authority 和 Role 為多對多的對應關系
           Role 和 Employee 為多對多的對應關系
    需要 3 個關聯表
        5.
           1. 修改當前系統的 login.jsp 頁面, 改為 spring-security 的登錄頁面, 并且在 <http> 節點中進行配置.
    注意: spring-security 在登錄成功后, 利用 "重定向" 轉到 form-login 節點對應的 default-target-url 屬性對應的頁面. 所以不能直接將其配置為 WEB-INF 目錄下的任何頁面
          2. 新建 UserDetailsService 接口的實現類, 以實現從數據庫中獲取用戶信息(需要查詢 Employee, Role, Authority, 參見 spring-security-2 的UserDetailsServiceImpl, 基于 Hibernate 實現),并把該類的 Bean 引用裝配給 <authentication-provider> 節點的 user-service-ref 屬性 
        6. 向 ems_resource_table, ems_authority_table, ems_resource_authority_table 數據表中添加數據
        7. 新建 ResourceDetailsService 接口的實現類, 實現從數據庫中讀取需要被保護的資源信息及其可以訪問這些資源的權限信息
        8. 利用 FactoryBean 新建 DefaultFilterInvocationDefinitionSource 接口的 Bean, 并把  ResourceDetailsService 的 Bean 注入進來, 再把該 Bean 配置為 filterSecurityInterceptor 過濾器的 objectDefinitionSource 屬性

    2. 實現權限模塊:
     1. 實現 Role 的增, 刪, 改, 查

            角色的添加:

          頁面 UI:
                  a. 對字段的 jQuery validation 驗證
                  b. struts validator 驗證 **
                  c. Action的復雜驗證: 角色名不能重復 **.
                  d. 角色名的 ajax 驗證, 角色名不能重復 **.
                  e. 勾選權限時的級聯選擇. 例如: 勾選 "員工刪除" 的同時必須勾選 "員工查詢", 即不能讓用戶只有 "員工刪除" 權限, 而沒有 "員工查詢" 權限.
                  f. 使用到 Authority 的如下兩個字段: relatedAuthorites(與當前權限關聯的權限信息, 多個權限使用 "," 分隔), parentAuthority(當前權限的父權限)
    subAuthorities(當前權限的子權限)            
           若驗證都通過, 在 Action 中受理請求, 錄入角色
       
    注意:

           不能通過以下代碼獲取 parentAuthority 為 null 的 Authority 集合
           List list = authorityDao.findBy("parentAuthority", null);
           System.out.println(list.size());
    而應該使用:

           List list = authorityDao.find("FROM Authority auth WHERE auth.parentAuthority IS null");
        為 #select 添加 change 相應事件, 當選取某個父權限時, 子權限顯示


    今天就此為止,明天繼續!
    posted on 2010-03-13 23:21 d66380022 閱讀(1179) 評論(0)  編輯  收藏
    主站蜘蛛池模板: 三年片在线观看免费大全 | 亚洲午夜久久久久久久久电影网| 亚洲av日韩av永久在线观看 | 成年女人毛片免费播放人| 亚洲国产综合人成综合网站00| a毛片在线免费观看| 久久精品国产精品亚洲蜜月| 成人性生交大片免费看中文| 亚洲av无码无在线观看红杏| 三年片在线观看免费大全电影 | 亚洲av不卡一区二区三区| 久久免费动漫品精老司机| 久久久无码精品亚洲日韩按摩 | 无人影院手机版在线观看免费| 四虎亚洲精品高清在线观看| 免费高清小黄站在线观看| 含羞草国产亚洲精品岁国产精品 | 精品久久久久久亚洲| 日本亚洲欧洲免费天堂午夜看片女人员| 久久久久亚洲AV无码专区首| 成年黄网站色大免费全看| 亚洲人成人网毛片在线播放| 国产在线观看免费视频播放器 | 亚洲卡一卡2卡三卡4卡无卡三| 国产成人福利免费视频| 亚洲日韩AV无码一区二区三区人| 免费少妇a级毛片人成网| 今天免费中文字幕视频| 亚洲一区二区三区不卡在线播放| 国产成人高清精品免费鸭子| 久久久久免费视频| 亚洲av无码片在线观看| 免费v片在线观看无遮挡| 在线观看特色大片免费网站| 亚洲人成电影网站| 亚洲А∨精品天堂在线| 久9久9精品免费观看| 亚洲精品无码久久久久秋霞| 国产综合亚洲专区在线| 在线观看免费人成视频色9| 亚洲国产免费综合|