`
tianhandigeng
  • 浏览: 374242 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于Acegi配置文件中filterChainProxy的属性filterInvocationDefinitionSource的解析问题(转载)

阅读更多

今天研究acegi时遇到一个问题,filterChainProxy类中的filterInvocationDefinitionSource是 FilterInvocationDefinitionSource类型,而在配置文件中传入了一个String类型的值。其间怎么转化,没弄明白,源码 中也没有找到。但是在网上搜到这样一个帖子,原理解释的很明白。原帖地址:http://www.iteye.com/topic/165714

下面是摘录的关键部分:

曾经查看Acegi的源码,FilterSecurityInterceptor的objectDefinitionSource属性的类型为FilterInvocationDefinitionSource , 猜测Acegi是使用FilterInvocationDefinitionSourceEditor读取配置并赋值给它 (objectDefinitionSource)的,因为查看FilterInvocationDefinitionSourceEditor的源码, 其中有相关的读取配置的代码。但FilterInvocationDefinitionSourceEditor是在何时及如何被调用的呢?

在Spring的官方论坛中找到一个帖子:
http://forum.springframework.org/showthread.php?t=11242&highlight=objectDefinitionSource

其中提到:

引用
The PropertyEditorManager uses three techniques for locating an editor for a given type. First, it provides a registerEditor method to allow an editor to be specifically registered for a given type. Second it tries to locate a suitable class by adding "Editor" to the full qualified classname of the given type (e.g. "foo.bah.FozEditor"). Finally it takes the simple classname (without the package name) adds "Editor" to it and looks in a search-path of packages for a matching class.



PropertyEditorManager是 java.beans包中的一个类,难道其中的根据“类型名称+Editor”来查找属性相应的编辑器(姑且这么翻译)的机制是Java早就拥有的?查看 JDK中PropertyEditorManager相关的内容,果然找到上面的那段话!

原来是这样!难怪在Spring、Acegi的源码中都找不到注册或调用FilterInvocationDefinitionSourceEditor的代码。我以为这是Spring或Acegi提供的机制,原来是Java的标准机制!

至此可以理解读取配置并给属性赋值的过程大致如下:
1.Spring读取Acegi相关的配置,知道需要把类似

引用
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 
                 PATTERN_TYPE_APACHE_ANT 
                 /secured/usermanage/**=ROLE_TEST 
                 /secured/**=ROLE_USER



的内容赋值给bean filterSecurityInterceptor的objectDefinitionSource属性

2.Spring知道filterSecurityInterceptor的objectDefinitionSource属性的类型为FilterInvocationDefinitionSource ,查找该类型的编辑器。因为Acegi并未为该类型显式地注册编辑器(查Acegi代码可知),Spring应用上面的规则查到相应的编辑器为FilterInvocationDefinitionSourceEditor

3.Spring实例化FilterInvocationDefinitionSourceEditor,并调用它完成后续的读取配置并给属性赋值的工作

 

 

分享到:
评论

相关推荐

    acegi配置文件

    acegi配置文件清单

    ldap与Acegi? ----Acegi配置文件解剖

    被解剖的acegi配置文件. 博文链接:https://rmn190.iteye.com/blog/175041

    Acegi配置指南[整理].pdf

    接下来,我们看到 `filterChainProxy` 的配置,它定义在 `acegi.xml` 文件中。`FilterChainProxy` 是 Acegi 中用于定义安全过滤器链的类。`filterInvocationDefinitionSource` 属性配置了过滤器链的规则,如 `/**=...

    Acegi配置指南

    然后,在Spring的配置文件(如`acegi.xml`)中,需要定义`filterChainProxy` Bean,它定义了过滤器链的顺序和职责: ```xml <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> ...

    acegi在spring中的完整配置

    随着 Spring Security 的发展,Acegi 已被 Spring Security 继承并进一步增强,但理解 Acegi 在 Spring 中的配置仍然对理解 Spring Security 的工作原理有所帮助。 在 Spring 中配置 Acegi,主要涉及以下几个关键...

    菜鸟-手把手教你把Acegi应用到实际项目中

    在本文中,我们将深入理解如何将Acegi应用到实际项目中,特别关注其核心配置——web.xml中的过滤器设置和Acegi安全文件的配置。 首先,我们来看web.xml中的过滤器配置: 1. **FilterToBeanProxy**:Acegi通过...

    Acegi学习笔记(JAVA系统安全编程时用到)

    在 Web 应用程序中集成 Acegi 和 Spring,你需要在 `web.xml` 文件中配置 `ContextLoaderListener`,这会启动 Spring 上下文并加载配置文件。例如,你可以指定 `contextConfigLocation` 为 `/WEB-INF/acegi-config....

    acegi

    - "aopacegi"可能是一个包含Acegi与AOP相关配置或实现的文件,可能涉及切面的定义和安全策略的配置。 Acegi Security在过去的开发实践中扮演了重要角色,它的设计理念和实现方式对后来的安全框架产生了深远影响。...

    Acegi配置web下载,完整

    Acegi配置.mhtAcegi配置的相关配置的信息在里面有一些

    挑战Acegi1.0

    ### 挑战Acegi1.0:小试牛刀,深入解析 #### 一、Acegi1.0概述 Acegi1.0是Spring Security的前身,它为Web应用程序提供了一个强大的安全框架,用于实现身份验证和授权等功能。本文将通过对一个简单的示例进行分析...

    Acegi 各过滤的解析(二)

    在本篇文章中,我们将深入解析 Acegi 中的各种过滤器及其作用。 首先,我们要了解 Acegi 的核心过滤器链,它是整个安全架构的基础。这个过滤链包括以下关键过滤器: 1. **ChannelProcessingFilter**:该过滤器负责...

    Acegi 详细配置说明

    Acegi是Spring Security的前身,它是...在实际应用中,我们通常会在Spring的XML配置文件中定义这些组件。例如,为了配置认证管理器,我们可以创建一个`UserDetailsService`实现,然后在Acegi配置中引用它: ```xml ...

    基于java的ACEGI

    2. **配置Spring**:在Spring的配置文件中,定义Acegi的安全上下文,包括认证和授权策略。 3. **定义安全元数据**:创建XML配置或使用注解来指定哪些URL、方法需要进行安全控制。 4. **实现认证和授权逻辑**:根据...

    spring acegi 使用工程demo

    3. **配置**:在Spring配置文件中,我们需要定义`<security:global-method-security>`来启用Acegi,然后配置`<security:http>`元素来设置URL过滤规则,如登录页面、访问权限等。 4. ** acegi.sql**:这个文件可能...

    spring acegi 详细文档

    在Spring Acegi中,安全配置通常通过XML配置文件完成,但也可以使用注解进行简化。配置包括定义访问控制规则、配置认证和授权策略,以及设置安全过滤器链。 例如,以下是一个简单的XML配置示例,定义了一个URL访问...

Global site tag (gtag.js) - Google Analytics