隨筆-54  評論-0  文章-2  trackbacks-0

            

          今天主要實現的是員工信息的修改和權限管理基礎,修改用AJAX實現的,權限看了不少的源代碼,感覺蠻難的,不過今天只是初步介紹,還有時間再學習一下!

           

          1.員工信息的修改

           1.struts對表單信息的回顯

           2.對可以進行修改的字段

          1.當該字段值發生改變時,confirm”確定修改該信息嗎?

             點擊取消:使該字段恢復為以前的默認值,不做改變,需要使用隱藏域

                  

           點擊“確定”:用AJAX改變字段,在配置文件中不需返回任何信息                              

             <script type=”text/javascript”>

              $(function(){

               $(“:text,select”).change(function(){

                 var flag = confirm(“確定要修改” + $(this).prev(“label”).text()+”信息嗎?”);

                  ...

          });

          }):

          </script>

          信息

          2.集成spring-security 框架

           1. Spring Security 能用 于保護各種 Java 應 用程序(權限管理框架).

           2.spring-security入門

             需 求:1. Spring-security 應用的根目錄下有兩個 Jsp 頁面: index.jsp admin.jsp. admin 用戶有權限訪問這兩個頁面, user 用戶只能訪問 index.jsp

          2.提供”登出”功能

             搭建環境:

                首先添加spring環境

          1.加入spring-security jar 包:

          spring-security-2.0.5"dist"spring-security-core-2.0.5.RELEASE.jar

          2.web.xml 文件中加入加入spring-security 框架的過濾器

          3.新建applicationContext-security.xml 配置文件,并且把security 作為默認的命名

          空間, 并將其導入到applicationContext.xml

          applicationContext-security.xml,有幾種重要配置:

          1. 配置 spring-security http 安全屬性   

                 <http auto-config="true">

                 2. 配置需要保護那些 資源, 以及訪問這些資源 所需要的權限, 若有多個 權限使用 ',' 分隔   

                        <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN"/>

                        <intercept-url pattern="/index-1.jsp" access="ROLE_USER"/>

                 3.配置登出服務   

                        <logout logout-url="/logout"

                               logout-success-url="/loguot-success.jsp"

                               invalidate-session="false" />

                 4.配置登錄頁面,

                               default-target-url: 若直接請求登錄頁面, 那么該屬性配置登錄成功之后的相應頁面  

                               always-use-default-target: 若請求的目標頁面受保護, spring-security 會相應 login-page 屬性對應的頁面, 默認情況下, 若登錄成功將相應剛才請求的目標頁面,

          但這相當麻煩,每次都要配置不少信息。下面 有更好的實現,即

          把需要攔截的url,權限,用戶信息放到放數據庫中,實現如下:

          1.實體類:

          Authority -- 權限

          Resource -- 資源

          Role -- 角色

          Employee -- 添加Set<Role> roleSet 屬性

          2.關系

          Resource Authority 為多對多的對應關系

          Authority Role 為多對多的對應關系

          Role Employee 為多對多的對應關系

          所以還需要3 個額外的關聯表


          3.實現把用戶信息,權限信息存放到數據庫中

            1. 實現把用戶信息, 權限信息存放到數據庫中

                 1). 自定義 UserDetailsService 接口的實現類, 將該類配置到 Spring IOC 容器中, 并在

                     <authentication-provider user-service-ref=""> 節點的 user-service-ref 屬性中引用該 Bean.

                 2). 通過 debug 查看 UserDetailsService 接口的實現類返回的 UserDetails 對象     

          4. 實現資源信息存放到數據庫中: 訪問資源時, spring-security 能區分出訪問該資源需要哪些權限

                 1). 自定義 ObjectDefinitionSource 接口的實現類, 將該類的實例裝配給 FilterSecurityInterceptor objectDefinitionSource 的 屬性.即可實現自定義的資 源獲取.

                 2). 通過繼承 DefaultFilterInvocationDefinitionSource 類的方法定義    ObjectDefinitionSource 接口的實現類有困難, 因為 DefaultFilterInvocationDefinitionSource

                            中沒有無參的構 造器, 該構造器有兩個參 數: UrlMatcher urlMatcher, LinkedHashMap requestMap.

                     urlMatcher 參數可 以通過 bean 的形式 事先配置, requestMap 參數類似于: {[/admin.jsp]=[ROLE_ADMIN], [/index.jsp]=[ROLE_USER]}, 需要訪問數據庫才能對其初始化, 但這不可能.

                 3). 通過查看 spring-security 核心 jar 包的 META-IN spring.handlers 找到 SecurityNamespaceHandler, 在該類中查看 registerBeanDefinitionParser(Elements.HTTP, new HttpSecurityBeanDefinitionParser()); 方法

                           HttpSecurityBeanDefinitionParser 類 中可以看到如何創建 DefaultFilterInvocationDefinitionSource 實例.

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

           


          posted on 2010-03-10 01:00 d66380022 閱讀(461) 評論(0)  編輯  收藏
          主站蜘蛛池模板: 镇坪县| 抚顺县| 文昌市| 温泉县| 合川市| 漳平市| 仁布县| 马公市| 宜昌市| 黑水县| 连南| 德令哈市| 安图县| 阿巴嘎旗| 江山市| 滦平县| 玉树县| 喜德县| 霞浦县| 通州市| 汉阴县| 彝良县| 烟台市| 凤城市| 纳雍县| 桦甸市| 峨山| 兴国县| 巧家县| 四平市| 潍坊市| 旅游| 嘉善县| 大姚县| 台北市| 灌云县| 永康市| 盐边县| 凤山县| 开阳县| 新田县|