The order that filters are defined in web.xml is very important. Irrespective of which filters you are actually using, the order of the <filter-mapping>s should be as follows:
1,ChannelProcessingFilter, because it might need to redirect to a different protocol
2,ConcurrentSessionFilter, because it doesn't use any SecurityContextHolder functionality but needs to update the SessionRegistry to reflect ongoing requests from the principal
3,HttpSessionContextIntegrationFilter, so a SecurityContext can be setup in the SecurityContextHolder at the beginning of a web request, and any changes to the SecurityContext can be copied to the HttpSession when the web request ends (ready for use with the next web request)
4,Authentication processing mechanisms - AuthenticationProcessingFilter, CasProcessingFilter, BasicProcessingFilter, HttpRequestIntegrationFilter, JbossIntegrationFilter etc - so that the SecurityContextHolder can be modified to contain a valid Authentication request token
5,The SecurityContextHolderAwareRequestFilter, if you are using it to install an Acegi Security aware HttpServletRequestWrapper into your servlet container
6,RememberMeProcessingFilter, so that if no earlier authentication processing mechanism updated the SecurityContextHolder, and the request presents a cookie that enables remember-me services to take place, a suitable remembered Authentication object will be put there
7,AnonymousProcessingFilter, so that if no earlier authentication processing mechanism updated the SecurityContextHolder, an anonymous Authentication object will be put there
8,ExceptionTranslationFilter, to catch any Acegi Security exceptions so that either a HTTP error response can be returned or an appropriate AuthenticationEntryPoint can be launched
9,FilterSecurityInterceptor, to protect web URIs
All of the above filters use FilterToBeanProxy or FilterChainProxy. It is recommended that a single FilterToBeanProxy proxy through to a single FilterChainProxy for each application, with that FilterChainProxy defining all of Acegi Security Filters.
分享到:
相关推荐
在 `applicationContext-security.xml` 文件中,每个过滤器都需要与一个 bean 配对,并且通过 `<filter-chain>` 元素定义过滤器的执行顺序。`<http>` 元素用于包裹所有的过滤器链,其中可以指定全局的请求映射规则。...
Acegi 是一个基于Spring框架的Web应用程序安全框架,它的核心功能是提供声明式的访问安全控制。...配置 Acegi 要注意过滤器链的顺序、过滤器的功能以及与Spring容器的集成,以确保安全策略的正确实施。
Acegi过滤器配置 ```xml <filter-name>AcegiFilterChainProxy <filter-class>org.acegisecurity.util.FilterToBeanProxy <param-name>targetClass <param-value>org.acegisecurity.util.FilterChainProxy ...
过滤器链的执行是由`VirtualFilterChain`类负责的,它按顺序调用每个过滤器的`doFilter`方法,从而确保过滤器链的正确执行。 #### 核心过滤器解析 ##### 6.1 HttpSessionContextIntegrationFilter 该过滤器主要...
3. ****:这个元素定义了一组安全过滤链,每个过滤链由一系列过滤器组成,这些过滤器按顺序执行,实现对HTTP请求的拦截和处理。例如,`FilterSecurityInterceptor`会检查当前请求是否满足授权条件。 4. ****:这个...
1. **过滤链(FILTER CHAIN)**:Acegi的核心是FilterChainProxy,它按照定义的顺序调用过滤器。过滤链定义了安全流程,包括认证、授权等步骤。CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON参数用于指定在比较URL...
通过在配置文件中指定哪些URL资源需要使用HTTPS,Acegi过滤器会自动处理这些资源的协议转换,简化了HTTPS的集成过程。 #### 五、安全对象访问控制 Acegi中的受保护资源被称为“安全对象”,主要包括URL资源和业务...
开发者可以根据需要调整过滤器链的顺序和配置。 **国际化**: Acegi支持多语言环境,可以方便地为不同语言的用户提供错误消息。 **集成其他Spring组件**: 由于Acegi是Spring的一部分,它可以无缝集成Spring MVC、...
过滤器链允许开发者按顺序定义多个安全过滤器,以实现复杂的访问控制逻辑。 6. **异常处理(Exception Handling)**:Acegi Security将安全相关的异常转换为统一的、可配置的HTTP响应,方便前端处理。 与Apache ...
3. 配置过滤器链,指定哪些过滤器应该在何时执行,以及它们之间的顺序。 4. 定义访问控制规则,例如使用`<http>`元素定义URL模式的访问权限。 5. 如果使用数据库存储用户信息,需要配置数据源和用户查询逻辑。 6. ...
这些过滤器按照特定的顺序执行,每个过滤器都有其特定的功能: 1. **通道处理过滤器**:首先检查请求是否通过安全通道(HTTPS)发送,如果不是,则重定向到安全通道。 2. **CAS 处理过滤器**:如果启用了 CAS 单点...
**安全过滤器(SecurityFilter)**是Web应用中一种常用的技术,用于实现用户访问权限的控制。在Java Web开发中,安全过滤器是基于Servlet规范的Filter接口实现的,它可以拦截HTTP请求,对请求进行预处理,比如验证...
文档中示例了如何配置springSecurityFilterChain过滤器,该过滤器使用DelegatingFilterProxy代理,从而将请求委托给Spring Security提供的过滤器链处理。 #### 5. 命名空间配置 在Spring Security 3.0.5中,通过在...