我的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 阅读(505) 评论(0)  编辑  收藏 所属分类: Acegi


只有注册用户登录后才能发表评论。


网站导航: