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 |
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