我的JAVA

          我的門戶
          隨筆 - 5, 文章 - 0, 評論 - 2, 引用 - 0
          數據加載中……

          Acegi配置指南(3)

          認證模式配置(一)

          HTTP基本認證

          HTTP基本認證利用瀏覽器的認證窗口搜集用戶名和密碼,以下是各個瀏覽器的效果圖:




          IE6下的效果圖

          IE7下的效果圖

          Ø  FireFox下的效果圖

           

          同時,還加入了退出、免登錄和匿名三個過濾器。

          代碼:

          <!-- 退出 -->

          <bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter">

              <constructor-arg value="/index.jsp" />

              <constructor-arg>

                 <list>

                     <ref local="rememberMeServices" />

                     <ref local="securityContextLogoutHandler" />

                 </list>

              </constructor-arg>

          </bean>

          <bean id="securityContextLogoutHandler" class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler">

              <property name="invalidateHttpSession" value="true" />

          </bean>

           

          <!-- HTTP基本認證 -->

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

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

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

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

          </bean>

          <!-- 認證管理器 -->

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

              <property name="providers">

                 <list>

                     <ref local="daoAuthenticationProvider" />

                     <ref local="anonymousAuthenticationProvider" />

                     <ref local="rememberMeAuthenticationProvider" />

                 </list>

              </property>

          </bean>

          <!-- DAO認證源提供者 -->

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

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

          </bean>

          <!-- 用戶信息提供者(內存) -->

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

              <property name="userMap">

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

              </property>

          </bean>

          <!-- HTTP基本認證入口點 -->

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

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

          </bean>

           

          <!-- 免登錄認證 -->

          <bean id="rememberMeProcessingFilter" class="org.acegisecurity.ui.rememberme.RememberMeProcessingFilter">

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

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

          </bean>

          <!-- 免登錄服務 -->

          <bean id="rememberMeServices" class="org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices">

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

              <property name="key" value="springRocks" />

              <property name="alwaysRemember" value="true" />

          </bean>

          <!-- 免登錄認證源提供者 -->

          <bean id="rememberMeAuthenticationProvider" class="org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider">

              <property name="key" value="springRocks" />

          </bean>

           

          <!-- 匿名認證 -->

          <bean id="anonymousProcessingFilter" class="org.acegisecurity.providers.anonymous.AnonymousProcessingFilter">

              <property name="key" value="foobar" />

              <property name="userAttribute" value="anonymousUser,ROLE_ANONYMOUS" />

          </bean>

          <!-- 匿名認證源提供者 -->

          <bean id="anonymousAuthenticationProvider" class="org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider">

              <property name="key" value="foobar" />

          </bean>

          說明:

          在基本認證過濾器之前加入退出過濾器,之后加入免登錄過濾器和匿名過濾器。參數:

          Bean

          參數

          描述

          logoutFilter
          退出過濾器

          構造參數1

          指定退出后的重定向url

          構造參數2

          指派退出的執行句柄,多值

          Ø  退出免登錄服務

          Ø  退出安全上下文

          securityContextLogoutHandler
          安全上下文退出句柄

          invalidateHttpSession

          是否讓HTTP會話失效

          basicProcessingFilter
          基本認證過濾器

          authenticationManager

          指派認證管理器

          authenticationEntryPoint

          指派EntryPoint

          rememberMeServices

          指派免登錄服務

          authenticationManager
          認證管理器

          providers

          指派認證源提供者,多值

          Ø  DAO認證源提供者

          Ø  免登錄認證源提供者

          Ø  匿名認證源提供者

          daoAuthenticationProvider
          DAO
          認證源提供者

          userDetailsService

          指派用戶信息源

          inMemDaoImpl
          用戶信息源(內存)

          userMap

          用戶信息

          basicProssingFilterEntryPoint
          基本認證入口點

          realmName

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

          rememberMeProcessingFilter

          免登錄過濾器

          authenticationManager

          指派認證管理器

          rememberMeServices

          指派免登錄服務

          rememberMeServices

          免登錄服務

          userDetailsService

          指派用戶信息源

          key

          指定密鑰

          alwaysRemember

          是否永久提供免登錄服務,包括退出瀏覽器(HTTP會話)

          rememberMeAuthenticationProvider

          免登錄認證源提供者

          key

          指定密鑰,和免登錄服務的密鑰保持一致

          anonymousProcessingFilter

          匿名過濾器

          userAttribute

          指定匿名登錄的用戶和角色,格式:

          uid,role

          key

          指定密鑰

          anonymousAuthenticationProvider
          匿名認證源提供者

          key

          指定密鑰,和匿名過濾器的密鑰保持一致

          Spring Bean關系圖:


          說明:每個圖塊為一個Spring Bean斜體Bean和同名正體Bean為同一個Bean

          問題:

          為什么加入了“退出”之后,還是沒有真正退出Acegi安全上下文?用戶還是能登錄被保護頁面?

          posted on 2010-02-23 13:53 xuyang 閱讀(512) 評論(0)  編輯  收藏 所屬分類: Acegi


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


          網站導航:
           
          主站蜘蛛池模板: 岱山县| 江永县| 浪卡子县| 衡水市| 鄂托克旗| 海盐县| 岗巴县| 新郑市| 高台县| 德化县| 晋宁县| 临沂市| 巫溪县| 永登县| 旌德县| 兰考县| 北流市| 石棉县| 甘泉县| 灵台县| 同德县| 蒙自县| 九龙县| 嘉鱼县| 睢宁县| 呼和浩特市| 天祝| 拉孜县| 龙岩市| 正宁县| 顺昌县| 龙胜| 平舆县| 黑龙江省| 公主岭市| 石河子市| 九江县| 开阳县| 榆社县| 徐州市| 沂水县|