欧美一区二区三区四区五区,人人看人人艹,亚洲一区二区中文,99精品视频99,亚洲精品欧美综合四区,国产三区视频在线观看,日韩在线观看一区二区,久久精品色
     
     
    類 型:
    頻 道:
    關(guān)鍵字:
     
     
       位置: 中華職工學(xué)習(xí)網(wǎng) >> 職工學(xué)習(xí)中心 >> 工程技術(shù)人員 >> 計算機與應(yīng)用工程技術(shù)人員 >> 正文
     
      標 題:實現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)
      日 期:2007/6/5  源 自:中華職工學(xué)習(xí)網(wǎng) 【字體: 字體顏色
     

    近年來,隨著Internet技術(shù)的迅猛發(fā)展,計算機網(wǎng)絡(luò)已深入到了人們的工作、學(xué)習(xí)和日常生活中,于是,怎樣構(gòu)建安全的web應(yīng)用也成為了當(dāng)前最熱門的話題。Spring是一個基于IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的構(gòu)架多層J2EE應(yīng)用系統(tǒng)的框架。Spring框架正在以其優(yōu)良的特性吸引了越來越多的開發(fā)人員的關(guān)注,并在大量的系統(tǒng)開發(fā)中被使用。然而,現(xiàn)有的Spring框架本身并沒有提供對系統(tǒng)安全性的支持,本文通過介紹一種可用于Spring框架中的安全框架Acegi,并對在Spring框架中使用Acegi實現(xiàn)安全用戶認證和資源授權(quán)控制進行了較深入的研究和擴展,同時給出了可行的解決方案。

      Spring框架和Acegi安全框架介紹

      1、spring 框架

      Spring框架是由Open Source開發(fā)的一個優(yōu)秀的多層J2EE系統(tǒng)框架,它為企業(yè)級應(yīng)用提供了一個非常輕量級的解決方案,大大地降低了應(yīng)用開發(fā)的難度與復(fù)雜度,提高了開發(fā)的速度。

      Spring框架的核心是IoC和AOP。IoC是一種設(shè)計模式,即IoC模式。IoC模式進一步降低了類之間的耦合度,并且改變了傳統(tǒng)的對象的創(chuàng)建方法,實現(xiàn)了一種配置式的對象管理方式,Spring框架中由IoC容器負責(zé)配置性的對象的管理。IoC模式極大的提高了系統(tǒng)開發(fā)與維護的靈活性。

      AOP是一種編程模式,它是從系統(tǒng)的橫切面關(guān)注問題。傳統(tǒng)的面向?qū)ο缶幊蘋OP主要從系統(tǒng)的垂直切面對問題進行關(guān)注,對于系統(tǒng)的橫切面關(guān)注很少,或者說很難關(guān)注,這樣當(dāng)考慮到系統(tǒng)的安全性、日志、事務(wù)以及其他企業(yè)級服務(wù)時,OOP就無能為力了,只能在所有相關(guān)類中加入類似的系統(tǒng)服務(wù)級的代碼。AOP為解決系統(tǒng)級服務(wù)問題提供了一種很好的方法。AOP將系統(tǒng)服務(wù)分解成方面看待,并為類提供一種聲明式系統(tǒng)服務(wù)方式。Java類不需要知道日志服務(wù)的存在也不需要考慮相關(guān)的代碼。所以,用AOP編寫的應(yīng)用程序是松耦合的,代碼的復(fù)用性就提高了。

      2、Acegi 安全框架

      借助于Spring框架,開發(fā)者能夠快速構(gòu)建結(jié)構(gòu)良好的WEB應(yīng)用,但現(xiàn)有的Spring框架本身沒有提供安全相關(guān)的解決方案。同樣來自于Open Source 社區(qū)的Acegi安全框架為實現(xiàn)基于Spring框架的WEB應(yīng)用的安全控制提供了一個很好的解決方案。Acegi本身就是利用Spring提供的IoC和AOP機制實現(xiàn)的一個安全框架,它將安全性服務(wù)作為J2EE平臺中的系統(tǒng)級服務(wù),以AOP Aspect形式發(fā)布。所以借助于Acegi安全框架,開發(fā)者能夠在Spring使能應(yīng)用中采用聲明式方式實現(xiàn)安全控制。

      Acegi安全框架主要由安全管理對象、攔截器以及安全控制管理組件組成。安全管理對象是系統(tǒng)可以進行安全控制的實體,Acegi框架主要支持方法和URL請求兩類安全管理對象;攔截器是Acegi中的重要部件,用來實現(xiàn)安全控制請求的攔截,針對不同的安全管理對象的安全控制請求使用不同的攔截器進行攔截;安全控制管理部件是實際實現(xiàn)各種安全控制的組件,對被攔截器攔截的請求進行安全管理與控制,主要組件包括實現(xiàn)用戶身份認證的AuthenticationManager、實現(xiàn)用戶授權(quán)的AccessDecisionManager 以及實現(xiàn)角色轉(zhuǎn)換的RunAsManager。安全管理對象、攔截器以及安全控制管理組件三者關(guān)系如圖1所示。

      Acegi安全框架在基于Spring框架的系統(tǒng)中的應(yīng)用

      1、分析系統(tǒng)安全性需求

      首先,需要明確進行安全控制的對象,可為業(yè)務(wù)方法和URL資源。

      其次,需要進一步明確,系統(tǒng)身份認證資料和資源授權(quán)信息的數(shù)據(jù)持久化形式。

      2、Acegi安全系統(tǒng)數(shù)據(jù)庫設(shè)計

      在Acegi框架中支持多種安全信息的持久化方式,可以在配置文件中配置或存放在關(guān)系數(shù)據(jù)庫。由于在實際應(yīng)用中,需求是經(jīng)常發(fā)生變化的。所以,在配置文件中配置是滿足不了實際應(yīng)用需求的。然而,Acegi本身對權(quán)限表的設(shè)計非常簡單,users表{username,password,enabled} 和authorities表{username,authority},這樣簡單的設(shè)計肯定無法適用復(fù)雜的權(quán)限需求。為了解決權(quán)限管理的復(fù)雜性,在這里引入了role(角色)的概念,使得用戶和權(quán)限分離,一個用戶擁有多個角色,一個角色擁有多個相應(yīng)的權(quán)限,這樣就更靈活地支持安全策略。

      同時,為了更好地配合Acegi安全框架,還引入resource(資源)的概念,資源可分為URL和FUNCTION(方法)兩種,一個權(quán)限可以對應(yīng)多個資源。
    3、認證管理器,授權(quán)管理器的配置

      實現(xiàn)系統(tǒng)的安全控制,首先需要對系統(tǒng)的安全管理器和授權(quán)管理器進行配置,系統(tǒng)進行認證和授權(quán)需要獲取安全信息,Acegi本身提供了對認證信息的獲取機制,在實現(xiàn)認證與授權(quán)過程中,系統(tǒng)將主動根據(jù)配制信息和相應(yīng)的信息解釋安全信息的讀取。圖3給出了一個將用戶安全信息存儲在數(shù)據(jù)庫中的認證管理器的配置示意圖。

      對應(yīng)于圖示的XML配置文件的代碼如下:


    /* 配置數(shù)據(jù)庫datasource 和Acegi 的 jdbcDao */
    <bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
     <property name=”driverClassName”>
      <value>${jdbc.driverClassName}</value>
     </property>
     <property name=”url”>
      <value>${jdbc.url}</value>
     </property>

     


    圖3 認證管理器配制示意圖
     

     

    <property name=”username”>
     <value>${jdbc.username}</value>
    </property>
    <property name=”password”>
     <value>${jdbc.password}</value>
    </property>
    </bean>
    <bean id=”jdbcDaoImpl” class=”org.acegisecurity. roviders. dao.jdbc.JdbcDaoImpl”>
     <property name=”dataSource”>
      <ref bean=”dataSource”/>
     </property>
    </bean>

    /*配置用戶信息的加密算法*/
    <bean id=”passwordEncoder”
    Class=”org.acegisecurity.providers.encoding.Md5passwordEncoder”/>
    /*配置緩存有效時間*/
    <bean id=”userCache” class=”org.acegiSecurity. providers. dao.cache.EhCacheBasedUserCache”>
     …//這里對緩存有效時間進行設(shè)置
    </bean>

    /*配置daoAuthenticationProvider*/
    <bean id=”daoAuthenticationProvider”
    class=”org.acegisecurity.providers.dao.DaoAuthenticationProvider”>
     <property name=”authenticationDao”>
      <ref local=”JdbcDaoImpl”/>
     </property>
     <property name=”passwordEncoder”>
      <ref local=” passwordEncoder”/>
     </property>
     <property name=”userCache”>
      <ref local=” userCache”/>
     </property>

    </bean>

    /*配置認證管理器*/
    <bean id=”authenticationManager” class=”org.acegisecurity. providers.ProviderManager”>
     <property name=”providers”>
      <list>
       <ref local=”daoAuthenticationProvider”/>
      </list>
     </property>
    </bean>


      授權(quán)管理器的配置方法與認證管理器的配置基本類似,這里不再討論。
    4、安全請求攔截器的配置

      以上配置完成后,就需要配置安全攔截器。不同的安全管理對象需要使用不同的安全攔截器。對于方法級的安全認證需要使用的攔截器為MethodSecurityInterceptor,而應(yīng)用于URL資源的安全攔截器為FilterSecurityInterceptor 。其中,MethodSecurityInterceptor攔截器是借助于Spring Aop實現(xiàn)的,而FilterSecurityInterceptor攔截器是借助于Servlet Filter 實現(xiàn)的。本文以URL資源請求的安全攔截器為例說明配置情況。

      由于URL資源請求安全攔截是借助于過濾器進行的。因此首先要配置Acegi Servlet過濾器。過濾器類似于AOP Around裝備,實現(xiàn)在web資源調(diào)用前后進行的一些操作6種過濾器,他們依次構(gòu)成Servlet過濾器鏈,依次處理客戶請求。需要注意的是過濾器配置的順序是不能交換的,當(dāng)不需要使用某個過濾器時,可直接將其刪除和注釋。過濾器在web.xml中配置形式為


    <filter>
     <filter-name>Acegi HTTP Request Security Filter</filter-name>
     <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
     <init-param>
      <param-name>targetClass</param-name>
      <param-value>
       Org.acegisecurity.intercept.web.SecurityEnforcementFilter
      </param-value>
     </init-param>
    </filter>
    <filter-mapping>
     <filter-name>Acigi HTTP Request Security Filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>


      在spring applicationContext.xml文件中的配置形式為


    <bean id=”securityEnforcementFilter” class=””>
     <property name=”filterSecurityInterceptor”>
      <ref bean=”filterInvocationInteceptor”/>
     </property>
     <property name=”authenticationEntryPoint”>
      <ref bean=”authenticationProcessingFilterEntryPoint”/>
     </property>


      以上代碼是SecurityEnforcementFilter的配置,該過濾器對用戶是否有權(quán)訪問web資源作出最后的決定。其它的過濾器的配置類同。
    配置完過濾器后,需要對攔截器FilterSecurityInterceptor進行配置,


    <bean id=”filterInvocationInterceptor”
    Class=””>
     <property name=”authenuserCacheticationManager”>1
     <property name=”accessDecisionManager”>
     <property name=”objectDefinitionSource”>
      <ref local="filterObjectDefinitionSource"/>
     </property>
    <bean id="filterObjectDefinitionSource"
    class="org.xiaohongli.acegi.db.DBFilterObjectDefinitionSource">
     <constructor-arg><refbean="jdbcTemplate"/>
     </constructor-arg>
    </bean>


      objectDefinitionSource屬性定義了那些受保護的URL資源,其中引用了一個本地對象filterObjectDefinitionSource。filterObjectDefinitionSource類從數(shù)據(jù)庫中讀取需要保護的URL安全信息,它擴展了PathBasedFilterInvocationDefinition Map類。
    同樣,實現(xiàn)了另外一個methodObjectDefinitionSource類從數(shù)據(jù)庫中讀取需要保護的FUNCTION資源,它擴展了MethodDefinitionMap類。限于篇幅,在這里就不列出具體實現(xiàn)的源代碼。


    <bean id="methodObjectDefinitionSource"
    class="org.xiaohongli.acegi.db.DBMethodObjectDefinitionSource">
    <constructor-arg><refbean="jdbcTemplate"/>
    </constructor-arg>
    </bean>


      結(jié)束語

      由于Spring在越來越多的項目中的應(yīng)用,因此基于Spring應(yīng)用的安全控制系統(tǒng)的研究就顯得非常重要。Acegi提供了對Spring應(yīng)用安全的支持,然而 Acegi本身提供的實例并不能滿足大規(guī)模的復(fù)雜的權(quán)限需求,本文通過擴展Acegi的數(shù)據(jù)庫設(shè)計即可滿足復(fù)雜的權(quán)限需求。然而,怎樣將Acegi應(yīng)用到非Spring的系統(tǒng)中,還有待進一步研究。

     
    [打印此文][關(guān)閉窗口][返回頂部
     
    主站蜘蛛池模板: 日韩精品免费一区二区三区| 欧美日韩一区二区三区四区五区| 狠狠色噜噜狠狠狠狠2018| 午夜666| 国产丝袜一区二区三区免费视频| 97久久精品人人澡人人爽| 精品国产乱码久久久久久a丨| 亚洲精品456在线播放| 午夜电影天堂| 国产女性无套免费看网站| 欧美乱妇在线观看| 午夜剧场伦理| 亚洲欧美日本一区二区三区| 国产一区二区视频在线| 国产乱人伦精品一区二区三区| 国产精品乱码久久久久久久| 精品欧美一区二区精品久久小说| 午夜亚洲影院| 少妇bbwbbwbbw高潮| 97久久国产精品| 国产一区二区三区小说| 国产伦精品一区二区三区电影 | _97夜夜澡人人爽人人| 91人人爽人人爽人人精88v | 欧美精品日韩精品| 国产婷婷一区二区三区久久| 国产一区二区在线91| 欧美极品少妇| 精品国产一区在线| 国产一区二区伦理| 日韩精品免费一区二区夜夜嗨| 香港三日本8a三级少妇三级99| 国产电影一区二区三区下载| 国产精品一区一区三区| 亚洲国产精品一区在线| 色婷婷精品久久二区二区我来| 午夜性电影| 国产精品免费一视频区二区三区| 亚洲理论影院| 欧美乱战大交xxxxx| 亚洲四区在线| 91国内精品白嫩初高生| 手机看片国产一区| 欧美日韩国产一区二区三区在线观看| 四虎国产精品永久在线| 国产一区二区麻豆| 亚洲欧美制服丝腿| 久久国产精久久精产国| 激情久久一区二区| 欧美3p激情一区二区三区猛视频| 欧美一区二区伦理片| 亚洲精品久久久久999中文字幕 | 日本看片一区二区三区高清| 国产一级自拍| 日本激情视频一区二区三区| 国产真实乱偷精品视频免| 68精品国产免费久久久久久婷婷 | 欧美一级片一区| 国产一区二区在线91| 一级女性全黄久久生活片免费| 美女直播一区二区三区| 国产欧美日韩一级大片| 国产一区日韩一区| 国产精品刺激对白麻豆99| 狠狠色噜噜狠狠狠狠综合久| 亚洲精品一区在线| 996久久国产精品线观看| 91波多野结衣| av午夜影院| 一区二区三区中文字幕| 国产日韩精品一区二区三区| 国产欧美精品久久| 国产精品久久久久免费a∨大胸| 少妇中文字幕乱码亚洲影视| 国产女人和拘做受视频免费| 99久久精品一区| 国产精品96久久久| 欧美黑人巨大久久久精品一区| 中文字幕日韩有码| 国产www亚洲а∨天堂| 国产精品99一区二区三区| 一区二区久久精品| 久久精品—区二区三区| 少妇久久免费视频| 97精品国产aⅴ7777| 午夜爽爽爽男女免费观看 | 91久久国产露脸精品国产护士| 国产69精品久久99不卡解锁版| 亚洲精品日韩精品| 国产麻豆91视频| 一区二区久久精品66国产精品| 久久99精品国产麻豆婷婷洗澡 | 久久久精品观看| 国产欧美精品久久| 国产欧美日韩精品一区二区图片| 99精品一区二区| 99欧美精品| 2023国产精品自产拍在线观看| 久久久精品欧美一区二区免费| 久久天天躁狠狠躁亚洲综合公司 | 免费看欧美中韩毛片影院| 国产精品一级在线| 久久精品欧美一区二区| 激情久久一区二区三区| 国产一区二三| 日韩av中文字幕在线| 欧美精品国产一区| 国产偷亚洲偷欧美偷精品| 欧美日韩国产午夜| 久久噜噜少妇网站| 99久久婷婷国产综合精品电影| 一区二区三区四区国产| 日本亚洲国产精品| 国产伦精品一区二区三区无广告| 国产又黄又硬又湿又黄| 欧美精品日韩| 亚洲一区二区三区加勒比| 一区二区久久久久| 亚洲精品日韩色噜噜久久五月| 欧美精品一卡二卡| 国产日韩欧美精品| 久久精品爱爱视频| 97人人澡人人添人人爽超碰| 国产精品天堂网| 四季av中文字幕一区| 日韩欧美激情| 久久精品国产99| 999亚洲国产精| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产一区二区久久久777| 国产伦精品一区二区三区四区| 欧美黄色一二三区| 精品国产一区二区三区麻豆免费观看完整版 | 久久国产欧美视频| 国产jizz18女人高潮| 17c国产精品一区二区| 国产在线不卡一| 国产美女视频一区二区三区| 国产欧美一区二区三区沐欲| 91一区在线观看| 国产一区二区三区小说| sb少妇高潮二区久久久久| 国产偷久久一区精品69| 欧美激情视频一区二区三区免费| 搡少妇在线视频中文字幕| 鲁一鲁一鲁一鲁一鲁一av| 神马久久av| 精品国产乱码久久久久久影片| 久久久精品视频在线| 亚洲精品一区二区另类图片| 日本aⅴ精品一区二区三区日| 一区二区三区国产视频| 国产精品久久国产三级国电话系列 | 国产精品无码专区在线观看 | 色噜噜狠狠色综合中文字幕| 少妇中文字幕乱码亚洲影视| 日本三级韩国三级国产三级| 久久久午夜爽爽一区二区三区三州| 国产天堂第一区| 国产日韩欧美在线一区| 国产精品视频一区二区三| 欧美在线一级va免费观看| 88888888国产一区二区| 欧美日韩一区二区三区免费| 国产的欧美一区二区三区 | 麻豆精品一区二区三区在线观看| 日韩精品一区二区av| 国产精品不卡一区二区三区| 狠狠色噜噜狠狠狠狠777| 久久免费视频一区二区| 日韩欧美精品一区二区| 久久一区二区三区欧美| 国产精品96久久久| 精品国产91久久久| 狠狠色噜噜狠狠狠狠2021免费| 亚洲欧洲另类精品久久综合| 色噜噜狠狠狠狠色综合久 | 午夜爱爱电影| 国产精品久久久久久久久久久杏吧| 欧美一区久久| 久爱精品视频在线播放| 午夜毛片在线观看| 亚洲欧美日韩精品suv| 亚洲激情中文字幕| 少妇高潮在线观看| 国产在线精品一区| 午夜看片在线| 欧美日韩偷拍一区| 美日韩一区| 国产精品欧美一区二区三区| 精品久久不卡| 久久精品亚洲精品| 处破大全欧美破苞二十三| 国产天堂第一区| 国产精品日韩在线观看| 久久福利免费视频| 野花社区不卡一卡二| 欧美极品少妇xxxxⅹ| 性刺激久久久久久久久九色| 国产一二区在线| 午夜av片| 性少妇freesexvideos高清bbw| 久99久视频| 国产经典一区二区| 久热精品视频在线| 91精品国产高清一区二区三区| 91国产在线看| 欧美在线视频二区| 欧美3p激情一区二区三区猛视频 | 狠狠色狠狠色合久久伊人| 精品国产一区二区三区麻豆免费观看完整版 | 一区二区午夜| 欧美亚洲另类小说| 国产精品一二二区| 欧美极品少妇videossex| 在线视频不卡一区| 国产偷自视频区视频一区二区| 日本一二三区电影| 国产欧美一区二区三区四区| 91亚洲国产在人线播放午夜| 91精品福利在线| 国产九九九精品视频| 国产精品99一区二区三区| 欧美一区二区三区久久久| 国产一区在线视频观看| 欧美在线观看视频一区二区| 亚洲三区二区一区| 国产欧美一区二区三区不卡高清| 精品欧美一区二区精品久久小说| 午夜激情看片| 亚洲少妇一区二区三区| 99久久国产综合精品女不卡| 二区三区视频| 91免费视频国产| 中文字幕一区二区三区又粗| 国产精品久久久不卡| 婷婷嫩草国产精品一区二区三区| 国内久久久| 91麻豆精品国产91久久久资源速度| 一区二区欧美精品| 91精品夜夜| 欧美日韩国产午夜| 精品国产乱码一区二区三区a| 亚洲精品丝袜| 88国产精品视频一区二区三区| 国产精品亚洲欧美日韩一区在线|