| 学习Acegi-认证(authentication) |
|
作者:佚名 责任编辑:左决 点击数: 更新时间:2008-3-14 0:32:36 |
 |
最近两星期在学习acegi,过程中感谢javaEye,SpringSide和在网上提供acegi学习心得的网友们。 为了加深自己的认识,准备写下一些DEMO,希望可以给准备学习acegi的同学一些帮助。 作为安全服务离不开认证和授权这两个主要组成部分。而这篇文章就是针对acegi的认证服务。 学习Acegi-认证(authentication) 代码环境基于: JDK1.5 acegi1.0.3 spring2.0
IDE基于: Eclipse3.2+MyEclipse5.0.1
面向人员: 熟悉Eclipse+MyEclipse开发但刚开始了解acegi的人员。如果你是高手请指出文章不足之处。
1.建立一个MyEclipse的WebProject,把下列jar文件拷贝到项目的WEB-INF/lib目录: acegi-securITy-1.0.3.jar spring2.0.jar commons-codec-1.3.jar 费话说一句(占些字数):这是因为代码运行需要这些包的支持。
2.修改WEB-INF下的web.xml文件,内容如下:
<? xml version = " 1.0 " encoding = " UTF-8 " ?> < web - app version = " 2.4 " xmlns = " http://java.sun.com/xml/ns/j2ee " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation = " http://java.sun.com/xml/ns/j2ee http: // java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
< display - name > acegi Example of liuyxIT </ display - name > <!-- 定义应用的上下文参数,用于ContextLoaderListener --> < context - param > < param - name > contextConfigLocation </ param - name > < param - value > classpath:spring / applicationContext.xml </ param - value > </ context - param >
<!-- acegi 的filter链代理 --> < filter > < filter - name > Acegi Filter Chain Proxy </ filter - name > < filter - class > org.acegisecurITy.util.FilterToBeanProxy </ filter - class > < inIT - param > < param - name > targetClass </ param - name > < param - value > org.acegisecurITy.util.FilterChainProxy </ param - value > </ inIT - param > </ filter >
< filter - mapping > < filter - name > Acegi Filter Chain Proxy </ filter - name > < url - pattern > /* </url-pattern> </filter-mapping>
<!-- 装载应用软件的Spring上下文 要由WebapplicationContextUtils.getWebApplicationnContext(servletContext)得到. --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
</web-app>
其中FilterChainProxy实现了filter接口,它主要是实例化FilterChainProxy,并把所有动作交由FilterChainProxy处理。这样简化了web.xml的配置,并且充分利用了Spring IOC管理Bean的优势。
3.在src目录右键新建一个resource folder,在下面再建立acegi和spring目录 在spring目录中创建applicationContext.xml文件,内容:
<? xml version = " 1.0 " encoding = " UTF-8 " ?> < beans xmlns = " http://www.springframework.org/schema/beans " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " xmlns:aop = " http://www.springframework.org/schema/aop " xmlns:tx = " http://www.springframework.org/schema/tx " xsi:schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http: // www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http: // www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd " default - autowire = " byName " default - lazy - inIT = " true " > <!-- ======================== FILTER CHAIN ======================= --> < bean id = " filterChainProxy " class = " org.acegisecurITy.util.FilterChainProxy " > < property name = " filterInvocationDefinITionSource " > < value > CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /** =authenticationProcessingFilter,exceptionTranslationFilter </value> </property> </bean> <!-- ======================== 认证filter ======================= --> <!-- 表单认证处理filter --> <bean id="authenticationProcessingFilter" class="org.acegisecurITy.ui.webapp.AuthenticationProcessingFilter"> <property name="authenticationManager" ref="authenticationManager"/> <property name="authenticationFailureUrl" value="/acegilogin.jsp?login_error=1"/> <property name="defaultTargetUrl" value="/userinfo.jsp"/> <property name="filterProcessesUrl" value="/j_acegi_securITy_check"/> </bean> <!-- 认证管理器 --> <bean id="authenticationManager" class="org.acegisecurITy.providers.ProviderManager"> <property name="providers"><!-- 可有多个认证提供器,其中一个证通过就可以了 --> <list> <ref local="daoAuthenticationProvider"/> <ref local="rememberMeAuthenticationProvider"/> </list> </property> </bean> <bean id="daoAuthenticationProvider" class="org.acegisecurITy.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="inMemoryDaoImpl"/> </bean> <!-- 用户资料--> <bean id="inMemoryDaoImpl" class="org.acegisecurITy.userdetails.memory.InMemoryDaoImpl"> <property name="userMap"> <value> liuyxIT=123,ROLE_SUPERVISOR user1=user1,ROLE_USER user2=user2,disabled,ROLE_USER </value> </property> </bean> <!-- 异常处理filter --> <bean id="exceptionTranslationFilter" class="org.acegisecurITy.ui.ExceptionTranslationFilter"> <property name="authenticationEntryPoint"> <bean class="org.acegisecurITy.ui.webapp.AuthenticationProcessingFilterEntryPoint"> <property name="loginFormUrl" value="/acegilogin.jsp"/> <property name="forceHttps" value="false"/> </bean> </property> <property name="accessDeniedHandler"> <bean class="org.acegisecurITy.ui.AccessDeniedHandlerImpl"> <property name="errorPage" value="/accessDenied.jsp"/> </bean> </property> </bean> </beans>
[1] [2] [3] [4] 下一页 |
|
|
|
|
 |
最进更新 |
|
|
|
 |
推荐文章 |
|
|
|
|