- 浏览: 933488 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
上篇博客中,我们以静态地角度对Acegi的核心概念及其实现上的核心部件进行了谈讨,本这篇中,我们将结合一个Web程序来体会并介绍下在Web项目中配置Acegi里都有哪些关键点。
我们知道Acegi可以多种实用场景,但现在用的最多的还是在Web项目中,这里不再介绍配置的具体步骤,直接将一个配置好的Web项目传了上来(只做了那些必要的配置),见附件,不出意外的话,这个例子可以在Eclipse里直接运行,Eclipse版本为3.4.0。
下面的介绍都是以这个Web例子为介绍的, 大家最好先把例子下载下来体会下, 先大致地看下web.xml和application_acegi_context.xml这两个文件的内容, 以对Acegi的配置有个直观的印象.
咱们从web.xml文件开始.
我们看到这个文件特简单, 一共就context-param,filter,filter-mapping,listener,welcome-file-list五个配置元素. 先从最熟悉的配置元素逐个排除.第一个
welcome-
file-list不必多说, 排除掉. 再看listener,由于Acegi是建立在Spring框架上的,
这里通过listener来初始化Spring的Context是情理之中的, 也就不必再多考虑.
有了listener的理解基础,我们再看context-param也就明白了,这个元素把Acegi的配置文件
applicationContext-acegi-security.xml
提供给Spring.下面进入Acegi在Web应用中的关键部件Filter, 我们知道Acegi在Web应用方面的一个基本原理就是Servlet的Filter,这里配置中Filter实现类是
FilterToBeanProxy, 它有一个配置参数targetClass,其值为
FilterChainProxy, 这个Filter的配置很简单, 大多数
情况下我们可以直接从现有的例子中拷来就行, 很少需要做什么配置上的改动.不过,若想把Acegi工作原理及其工作细节搞明白的话,这个FilterToBeanProxy到
FilterChainProxy的转换是不能躲过的关键点,再进一步想, 看人家是怎么设计实现的对自己的"钱途"也是大有帮助的吧?从我自身的体会上来看,
FilterToBeanProxy和
FilterChainProxy两个类在设计上很有"嚼头",我想着在另外的博客中单独来看它们的实现与给自己的启发, 这里我们先有这样的一个概念:
FilterToBeanProxy在
doFilter时会从Spring的Context里get出
FilterChainProxy的实例,
FilterChainProxy自身也是一个Filter的实现类,它在
applicationContext-acegi-security.xml文件中初始化, 这样,
FilterToBeanProxy就把经过它的所有请求转给了
FilterChainProxy来处理, 这样就上了Acegi的道儿,也就是拦截下来的请求在真正做事前需得到Acegi的许可.
下面我们来看
applicationContext-acegi-security.xml文件,上面的分析我们得出,
FilterToBeanProxy把拦截下的请求交给了
FilterChainProxy来处理, 这个处理就是Acegi的核心概念Authentication和Authorization的实现.
在这个文件中我们首先看到如下的配置信息:
<bean id="filterChainProxy"
class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/login.jsp=#NONE#
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
</value>
</property>
</bean>
在上面介绍
web.xml文件内容时,我们提到FilterToBeanProxy从Spring的Contextget出
FilterToBeanProxy的实例,上面的配置信息让Spring来初始化
FilterChainProxy
类,随便说下, 这里
FilterChainProxy实现的id没有用到,再进一步想,Spring可以不用id再用类名就可以得到其实例.回到正题,
FilterChainProxy类有一个名为
filterInvocationDefinitionSource
的属性, 通过这个属性, Acegi把拦截下来的请求再一次转移.
我们先看
filterInvocationDefinitionSource属性里又都有些什么?从上面我们看到, value里是一些字符串描述的信息,这里有一个与当前Acegi不相干的思考:
setFilterInvocationDefinitionSource方法的参数类型是
FilterInvocationDefinitionSource,Spring是怎么把一个String类型的信息自动转成所需要的
FilterInvocationDefinitionSource类型的呢?这个问题在这里先不思考.回到正题, 属性
filterInvocationDefinitionSource里配置的关键信息是"
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
", 从下面的配置可以看出,
httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
几个Bean都是Filter接口的实现类,这几个Filter的实现类再调用上一篇博客里提到的"七剑"
实现Authentication和Authoriaztion的"理想".
那"七剑"是怎么与"
httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
"们配置的的呢?且看下回.
- myOwnAcegi.rar (7.7 MB)
- 下载次数: 289
评论

博主,方便加入“权限管理”圈子吗?然后把文章发布到圈子里面。权限管理,是我开辟专门讨论权限管理的。我对acegi不大了解,目前圈子里面还没用acegi文章呢。圈子地址:http://accessmanager.group.iteye.com/
好的, 很乐意与大家交流, 我整理下后就发过去.
然后把文章发布到圈子里面。
权限管理,是我开辟专门讨论权限管理的。我对acegi不大了解,目前圈子里面还没用acegi文章呢。
圈子地址:
http://accessmanager.group.iteye.com/
发表评论
-
Spring下配置job
2010-07-20 15:58 3429没什么可说的, 今天把以前配置的一个job重新整理了下,用ma ... -
研究下Spring中AOP的实现?
2010-06-03 17:57 1360碰到一个AOP的问题, 见“用Spring的 ... -
Debug地研究Hibernate分页功能过程中的另外收获
2009-12-17 15:04 13501, 如用MySQL,其分页sql是啥样的: selec ... -
CJC(二): abstract、子类与多态的单例模式
2009-03-16 10:33 2301CJC是Common Java Cookbo ... -
CJC(一): ToStringBuilder两种方法用法优缺点及一个问题
2009-03-15 20:37 4077CJC是Common Java Cookbook的缩 ... -
研究源码的新天地: 避害趋利
2009-03-14 14:48 1672前两篇分别描述了"为什么要研究源码" ... -
Acegi(十三): 让系统记住我
2009-03-13 09:59 2499经过一段时间的总结, 对Acegi的初步研究终于到 ... -
研究源码的新天地: 研究源码的痛苦
2009-03-12 15:50 1787上篇 中,写了出于什 ... -
研究源码的新天地: 为什么研究源码?
2009-03-11 21:03 1943把前些列出的一个 ... -
Acegi(十二): anonymousProcessingFilter有什么好玩的?
2009-03-09 17:47 2465在这篇博客中, 我们接着看另一个Filter, ano ... -
Acegi(十一): 借鉴Acegi的Exception的异常处理
2009-03-05 11:16 1524今天改项目中的一个问题时, 不由自住地想到了Acegi异 ... -
Acegi(十): securityContextHolderAwareRequestFilter结
2009-03-04 21:46 1882在Acegi(八) 和Acegi ... -
Acegi(九): 子类SavedRequestAwareWrapper
2009-03-02 22:27 2260上篇 中我们对 securi ... -
Acegi(八): securityContextHolderAwareRequestFilter
2009-03-01 22:03 2469上篇 中我们说了下 LogoutFilter的配置, 这篇 ... -
Acegi(七): LogoutFilter配置及几个问题
2009-02-28 18:49 2876这些天有点懒散, 想 ... -
Acegi源码研究(六): Acegi编码/设计碎得
2009-02-18 22:28 1671前些天通过一个Acegi的Web实例,我们感受了下 ... -
Acegi源码研究(五):七剑下天山
2009-02-17 23:10 2052在Acegi初体验及初解剖(http://rmn19 ... -
CoreJava: 第一次用LinkedHashSet带来的思考(二)
2009-02-15 21:05 1580在第一次用LinkedHa ... -
CoreJava: 第一次用LinkedHashSet带来的思考(一)
2009-02-14 19:34 8302用Java虽说时间不 ... -
Acegi(三): Acegi? Who are you?
2009-02-13 08:38 2470Acegi是个什么? ...
相关推荐
被解剖的acegi配置文件. 博文链接:https://rmn190.iteye.com/blog/175041
少儿编程scratch项目源代码文件案例素材-纸人伙计.zip
scratch少儿编程逻辑思维游戏源码-忍者罗伊 V5.zip
scratch少儿编程逻辑思维游戏源码-跑和枪.zip
前端开发_基于jQuery和EasyUI框架_企业级Web应用UI组件库与后台管理系统模板_提供GPL开源版本和商业授权版本的双重授权模式_适用于快速构建响应式管理后台和复杂数据可
少儿编程scratch项目源代码文件案例素材-纸格通关 云变量.zip
微信机器人开发_Wechaty框架_百度云主机部署_自然语言处理_消息自动化处理_多媒体文件管理_聊天记录持久化_表情包导出_语音视频自动保存_文件管理系统集成_跨平台数据同步_个
少儿编程scratch项目源代码文件案例素材-钻机机器人.zip
少儿编程scratch项目源代码文件案例素材-作战基地.zip
云计算_微服务分布式架构SpringCloudSpringBootDubboVuejs_互联网云快速开发框架敏捷开发系统代码生成工作流CMS图表统计地图统计_免费开源JAVA企业
scratch少儿编程逻辑思维游戏源码-日落塔.zip
Tobapuww_GPT-Recovery-Files_12888_1745866661386
少儿编程scratch项目源代码文件案例素材-战斗竞技场.zip
scratch少儿编程逻辑思维游戏源码-球球大作战.zip
聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发,安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD,TB等业务定制,子账号业务逻辑API 非常详细,方便内置对接! IP白名单 业务逻辑 支持IP白名单,黑名单,全局白名单,全局黑名单,保障系统的安全。 接口验签名 采用支付宝RSA加密接口方式,防止篡改数据,导致对账困难,资金大量损失,无故少钱 对接灵活 全部对接参数灵活操作 风控完善 轮询、交易金额、随机金额、最大金额、最小金额等 测试环境: Nginx+PHP7.0+MySQL5.6 网站运行目录:/public 伪静态设置为:thinkphp规则 数据库信息修改路径:/application/database.php
校园社交服务_微信小程序云开发_公告资讯失物招领二手交易兼职招聘表白墙_为高校师生提供一站式校园生活服务平台包含校园动态通知课程表查询失物发布与认领二手物品交易平台兼职信息发布与求
yinghuayu2377_myFTPDemo_32152_1745866651913
scratch少儿编程逻辑思维游戏源码-魔法球.zip
idea导入个人风格