我的JAVA

          我的門戶
          隨筆 - 5, 文章 - 0, 評(píng)論 - 2, 引用 - 0
          數(shù)據(jù)加載中……

          Acegi配置指南(1)

          Acegi Demo

          web.xml配置

          代碼:

          <web-app>

              ...

              <filter>

                  <filter-name>Acegi Filter Chain Proxy</filter-name>

                  <filter-class>

                      org.acegisecurity.util.FilterToBeanProxy

                  </filter-class>

                  <init-param>

                      <param-name>targetBean</param-name>

                      <param-value>filterChainProxy</param-value>

                  </init-param>

              </filter>

              ...

              <filter-mapping>

                  <filter-name>Acegi Filter Chain Proxy</filter-name>

                  <url-pattern>/*</url-pattern>

              </filter-mapping>

              ...

          </web-app>

          說(shuō)明:

          采用Web的過(guò)濾器,構(gòu)造一個(gè)過(guò)濾器鏈代理。初始參數(shù):

          參數(shù)名

          描述

          targetBean

          Spring中查找Bean名一致的類,交由該類處理真正的Web過(guò)濾。推薦使用。

          targetClass

          JVM中查找類名一致的類,交由該類處理真正的Web過(guò)濾。不同J2EE容器可能會(huì)導(dǎo)致不同結(jié)果,會(huì)被targetBean參數(shù)覆蓋。不推薦使用。

          init

          初始值。可能值包括:

          Ø  lazy:延遲加載。主要解決由于Spring采用ContextLoaderServlet加載模式時(shí)有可能會(huì)晚于該filter而導(dǎo)致filter加載失敗的問(wèn)題。

          lifecycle

          指定生命周期。可能值包括:

          Ø  servlet-container-managed:容器托管。一般情況下,AcegiFilter采用SpringAOP回調(diào),啟動(dòng)和結(jié)束調(diào)用beforeXxx()afterXxx()方法。如果采用J2EE規(guī)范中提供的filter方法init()destroy(),設(shè)置該參數(shù)。

          acegi.xml配置

          過(guò)濾器鏈(filterChainProxy

          代碼:

          <beans>

          ...

          <!-- 過(guò)濾器鏈代理 -->

          <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">

              <property name="filterInvocationDefinitionSource">

                 <value>

                     PATTERN_TYPE_APACHE_ANT

                     /**=httpSessionContextIntegrationFilter,

                          basicProcessionFilter,

                          exceptionTranslationFilter,

                          filterInvocationInterceptor

                 </value>

              </property>

          </bean>

          ...

          </beans>

          說(shuō)明:

          過(guò)濾器鏈,配置一組過(guò)濾器。參數(shù):

          參數(shù)

          描述

          filterInvocationDefinitionSource

          指定一組過(guò)濾器的Bean名。

          過(guò)濾器:

          過(guò)濾器

          描述

          httpSessionContextIntegrationFilter

          負(fù)責(zé)完成Acegi上下文與HTTP Session同步。

          basicProcessionFilter

          負(fù)責(zé)完成用戶的認(rèn)證。

          exceptionTranslationFilter

          負(fù)責(zé)處理認(rèn)證和授權(quán)中出現(xiàn)的異常。

          filterInvocationInterceptor

          負(fù)責(zé)完成用戶的授權(quán)。

          Spring Bean關(guān)系圖:


          說(shuō)明:每個(gè)圖塊為一個(gè)Spring Bean斜體Bean和同名正體Bean為同一個(gè)Bean

          HTTP會(huì)話集成(httpSessionContextIntegrationFilter

          代碼:

          <!-- HTTP會(huì)話集成 -->

          <bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter">

              <property name="allowSessionCreation" value="false" />

          </bean>

          說(shuō)明:

          負(fù)責(zé)完成Acegi上下文與HTTP Session同步。如果HTTP Session中存放了之前的認(rèn)證信息,將其還原到Acegi上下文中。退出應(yīng)用時(shí)會(huì)清除掉HTTP Session中的認(rèn)證信息。參數(shù):

          Bean

          參數(shù)

          描述

          httpSessionContextIntegrationFilter
          HTTP
          會(huì)話集成

          allowSessionCreation

          是否創(chuàng)建Session可能值包括:

          Ø  true:創(chuàng)建Session。默認(rèn)值。

          Ø  false:不創(chuàng)建Session

          基本認(rèn)證(basicProcessionFilter

          代碼:

          <!-- HTTP基本認(rèn)證 -->

          <bean id="basicProcessionFilter" class="org.acegisecurity.ui.basicauth.BasicProcessingFilter">

              <property name="authenticationManager" ref="authenticationManager" />

              <property name="authenticationEntryPoint" ref="basicProssingFilterEntryPoint" />

          </bean>

           

          <!-- 認(rèn)證管理器 -->

          <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">

              <property name="providers">

                 <list>

                     <ref local="daoAuthenticationProvider" />

                 </list>

              </property>

          </bean>

          <!-- 認(rèn)證源提供者 -->

          <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">

              <property name="userDetailsService" ref="inMemDaoImpl" />

          </bean>

          <!-- 用戶信息提供者(內(nèi)存級(jí)) -->

          <bean id="inMemDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">

              <property name="userMap">

                 <value>admin=password,ROLE_ADMIN</value>

              </property>

          </bean>

           

          <!-- HTTP基本認(rèn)證入口點(diǎn) -->

          <bean id="basicProssingFilterEntryPoint" class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint">

              <property name="realmName" value="Acegi Demo Realm" />

          </bean>

          說(shuō)明:

          負(fù)責(zé)完成用戶的認(rèn)證,會(huì)調(diào)用認(rèn)證管理器進(jìn)行用戶認(rèn)證。如果認(rèn)證不成功調(diào)用EntryPoint,構(gòu)造返回信息,如401,瀏覽器會(huì)彈出對(duì)話框要求用戶輸入用戶名和密碼。需要指派認(rèn)證管理器、認(rèn)證源和EntryPoint。參數(shù):

          Bean

          參數(shù)

          描述

          basicProcessingFilter
          基本認(rèn)證過(guò)濾器

          authenticationManager

          指派認(rèn)證管理器。

          authenticationEntryPoint

          指派EntryPoint

          authenticationManager
          認(rèn)證管理器

          providers

          指派認(rèn)證源提供者。多值。

          daoAuthenticationProvider
          DAO
          認(rèn)證源提供者

          userDetailsService

          指派認(rèn)證實(shí)現(xiàn)服務(wù)。

          inMemDaoImpl
          用戶信息源(內(nèi)存)

          userMap

          用戶名/密碼/角色信息,寫死在配置文件中。一般用于演示。格式:

          uid=pw,role

          basicProssingFilterEntryPoint
          基本認(rèn)證入口點(diǎn)

          realmName

          返回到瀏覽器的提示信息:域名。

          Spring Bean關(guān)系圖:


          說(shuō)明:每個(gè)圖塊為一個(gè)Spring Bean斜體Bean和同名正體Bean為同一個(gè)Bean

          異常處理(exceptionTranslationFilter

          代碼:

          <!-- 異常處理 -->

          <bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">

              <property name="authenticationEntryPoint" ref="basicProssionFilterEntryPoint" />

              <property name="createSessionAllowed" value="false" />

          </bean>

          說(shuō)明:

          負(fù)責(zé)處理認(rèn)證和授權(quán)中出現(xiàn)的異常。如果出現(xiàn)異常,調(diào)用EntryPoint。參數(shù):

          Bean

          參數(shù)

          描述

          exceptionTranslationFilter
          異常處理過(guò)濾器

          authenticationEntryPoint

          指派EntryPoint

          createSeesionAllowed

          是否創(chuàng)建Session可能值包括:

          Ø  true:創(chuàng)建Session。默認(rèn)值。

          Ø  false:不創(chuàng)建Session

          Spring Bean關(guān)系圖:


          說(shuō)明:每個(gè)圖塊為一個(gè)Spring Bean斜體Bean和同名正體Bean為同一個(gè)Bean

          授權(quán)攔截(filterInvocationInterceptor

          代碼:

          <!-- 授權(quán)攔截 -->

          <bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">

              <property name="authenticationManager" ref="authenticationManager" />

              <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager" />

              <property name="objectDefinitionSource">

                 <value>

                     PATTERN_TYPE_APACHE_ANT

                     /securedpage.jsp=ROLE_ADMIN

                 </value>

              </property>

          </bean>

          <!-- 授權(quán)策略 -->

          <bean id="httpRequestAccessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">

              <property name="decisionVoters">

                 <list>

                     <ref local="roleVoter" />

                 </list>

              </property>

          </bean>

          <!-- 投票策略實(shí)現(xiàn) -->

          <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />

          負(fù)責(zé)完成用戶的授權(quán)。給受保護(hù)的Web資源指定角色,指定授權(quán)策略。參數(shù):

          Bean

          參數(shù)

          描述

          filterInvocationInterceptor
          授權(quán)攔截器

          authenticationManager

          指派認(rèn)證管理器。

          accessDecisionManager

          指派訪問(wèn)策略管理器。

          objectDefinitionSource

          Web資源/角色信息,寫死在配置文件中。一般用于演示。格式:

          /uri=role

          accessDecisionManager

          授權(quán)策略管理器

          decisionVoters

          指派投票策略。多值。

          roleVoter
          投票策略實(shí)現(xiàn)

          無(wú)

           

          Spring Bean關(guān)系圖:


          說(shuō)明:每個(gè)圖塊為一個(gè)Spring Bean斜體Bean和同名正體Bean為同一個(gè)Bean

          監(jiān)聽器

          代碼:

          <!-- 認(rèn)證監(jiān)聽器 -->

          <bean id="authenticationLoggerListener" class="org.acegisecurity.event.authentication.LoggerListener" />

          <!-- 授權(quán)監(jiān)聽器 -->

          <bean id="authorizationLoggerListener" class="org.acegisecurity.event.authorization.LoggerListener" />

          說(shuō)明:

          監(jiān)聽Acegi的認(rèn)證/授權(quán)過(guò)程,并生成日志。

          完整關(guān)系圖


          說(shuō)明:每個(gè)圖塊為一個(gè)Spring Bean斜體Bean和同名正體Bean為同一個(gè)Bean

          posted on 2010-02-21 09:55 xuyang 閱讀(1024) 評(píng)論(0)  編輯  收藏 所屬分類: Acegi


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宁城县| 姜堰市| 玉田县| 临江市| 岚皋县| 英吉沙县| 乡城县| 樟树市| 武山县| 上蔡县| 靖西县| 旬邑县| 石嘴山市| 东辽县| 保德县| 松阳县| 永泰县| 庆安县| 壶关县| 隆尧县| 鲁山县| 平原县| 巴彦淖尔市| 新巴尔虎左旗| 马尔康县| 鄱阳县| 宝清县| 大关县| 林甸县| 平远县| 平定县| 广东省| 民丰县| 柳林县| 云霄县| 固原市| 碌曲县| 乾安县| 铁力市| 上饶县| 松阳县|