Acegi Security.docVIP

  • 2
  • 0
  • 约 19页
  • 2017-05-14 发布于江苏
  • 举报
Acegi Security.doc

Acegi 下面的介绍都是以这个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再用类名就可以得到其实例.回到正题, FilterC

文档评论(0)

1亿VIP精品文档

相关文档