将
Acegi
集成到
Web
应用程序中
Acegi
通过多个不同用途的
Servlet
过滤器截取
HTTP
请求实施访问安全的控制。按照传统的方式,我们应用在
web.xml
配置文件中通过
<filter>
定义
Servlet
过滤器并使用
<filter-mapping>
元素定义过滤器对应的
URL
匹配模式。
代理
Acegi
的过滤器
下面两个配置文件
Acegi
如何通过
FilterChainProxy
将
Servlet
容器
和
Spring
容器结合起来共同定义一个功能齐备的
Servlet
过滤器的。
web.xml
——
Servlet
容器
-
<
filter
>
-
<
filter-name
>
channelFilterProxy
</
filter-name
>
-
<
filter-class
>
-
org.acegisecurity.util.FilterToBeanProxy
-
</
filter-class
>
-
<
init-param
>
-
<
param-name
>
targetClass
</
param-name
>
-
<
param-value
>
-
org.acegisecurity.securechannel.ChannelProcessingFilter
-
</
param-value
>
-
</
init-param
>
-
</
filter
>
<filter>
<filter-name>channelFilterProxy</filter-name>
<filter-class>
org.acegisecurity.util.FilterToBeanProxy
</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>
org.acegisecurity.securechannel.ChannelProcessingFilter
</param-value>
</init-param>
</filter>
applicationContext.xml
——
Spring
容器
-
<
bean
class
=
" org.acegisecurity.securechannel.ChannelProcessingFilter "
>
-
<
property
name
=
"channelDecisionManager"
>
-
<
ref
local
=” ChannelDecisionManager"
>
-
</
property
>
-
<
property
name
=
"filterInvocationDefinitionSource"
>
-
<
ref
local
=” FilterInvocationDefinitionSource "
>
-
</
property
>
-
</
bean
>
<bean class=" org.acegisecurity.securechannel.ChannelProcessingFilter ">
<property name="channelDecisionManager">
<ref local=” ChannelDecisionManager">
</property>
<property name="filterInvocationDefinitionSource">
<ref local=” FilterInvocationDefinitionSource ">
</property>
</bean>
使用代理
过滤器链处理HTTP请求
当需要配置多个
Servlet
过滤器时,虽然我们可以通过
FilterToBeanProxy
分别进行配置,但这将导致冗长难看的
web.xml
,
同时还需要小心谨慎地通过过滤器的配置顺序保证它们的调用顺序。为了解决这个问题,
Acegi
在
Acegi 8.0
中添加了一个
org.acegisecurity.util.FilterChainProxy
。
FilterChainProxy
可以同时指定多个过滤器并奖它们组成一个过滤器链,
而
FilterToBeanProxy
且只要将代理目标设置为
FilterChainProxy
就可以了。
web.xml
中,配置如下信息
-
<
context-param
>
-
<
param-name
>
contextConfigLocation
</
param-name
>
-
<
param-value
>
classpath:applicationContext.xml
</
param-value
>
-
</
context-param
>
-
<
filter
>
-
<
filter-name
>
AcegiFilterChainProxy
</
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
>
AcegiFilterChainProxy
</
filter-name
>
-
<
url-pattern
>
/*
</
url-pattern
>
-
</
filter-mapping
>
-
<
listener
>
-
<
listener-class
>
-
org.springframework.web.context.ContextLoaderListener
-
</
listener-class
>
-
</
listener
>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>AcegiFilterChainProxy</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>AcegiFilterChainProxy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
applicationContext-acegi-plugin.xml
中,配置如下信息
-
<
strong
>
<
beans
>
-
<
bean
id
=
"filterChainProxy"
class
=
"org.acegisecurity.util.FilterChainProxy"
>
-
<
property
name
=
"filterInvocationDefinitionSource"
>
-
<
value
>
-
CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISON
-
PATTERN_TYPE_APACHE_ANT
-
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,logoutFilter
-
</
value
>
-
</
property
>
-
</
bean
>
-
<
bean
id
=”channelProcessingFilter”
-
class
=
" org.acegisecurity.securechannel.ChannelProcessingFilter "
>
-
</
bean
>
-
<
bean
id
=”httpSessionContextIntegrationFilter”
-
class
=
" org.acegisecurity.Context.HttpSessionContextIntegrationFilter "
>
-
</
bean
>
-
</
beans
>
-
</
strong
>
<beans>
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,logoutFilter
</value>
</property>
</bean>
<bean id=”channelProcessingFilter”
class=" org.acegisecurity.securechannel.ChannelProcessingFilter ">
</bean>
<bean id=”httpSessionContextIntegrationFilter”
class=" org.acegisecurity.Context.HttpSessionContextIntegrationFilter ">
</bean>
</beans>
FilterChainProxy
Bean
是
web.xml
的
FilterToBeanProxy
的委托目标。
FilterToBeanProxy
通过
filterInvocationDefinitionSource
定义多个相互链接的过滤器,以逗号分隔。
filterInvocationDefinitionSource
属性由两类信息组成,其一是指令信息,其二是具体的资源定义信息。指令信息定义了额外的操作规则,如
CONVERT_URL_TO_UPPERCASE_BEFORE_COMPARISON
表示判断
URL
匹配时,先将
URL
转变为大写的格式,而
PATTERN_TYPE_APACHE_ANT
则表示使用
Ant
路径风格进行匹配
URL
的描述,如果不提供这个命令,
Acegi
使用与此同时表达式来解析
URL
路径映射。
注意:
链中的过滤器名很长时也不要使用回车换行,否则将导致解析错误。
分享到:
相关推荐
spring_acegi精彩实例,带MYSQL数据库脚本,保证能运行 spring_acegi精彩实例,带MYSQL数据库脚本,保证能运行 spring_acegi精彩实例,带MYSQL数据库脚本,保证能运行 spring_acegi精彩实例,带MYSQL数据库脚本,...
spring+acegi+中文手册spring+acegi+中文手册spring+acegi+中文手册spring+acegi+中文手册spring+acegi+中文手册spring+acegi+中文手册spring+acegi+中文手册spring+acegi+中文手册spring+acegi+中文手册spring+...
Acegi Security System for Spring
Spring源代码解析(十):Spring_Acegi框架授权的实现.doc
Spring Acegi权限控制,安全系统就只包括两个问题: 认证和授权.
Acegi文档 spring acegi 详细文档
基于spring的Acegi安全框架认证与授权的分析及扩展.pdf
Spring Security acegi
NULL 博文链接:https://liaomin789.iteye.com/blog/581234
前段时间复习了spring怎么做权限的技术,spring acegi 学习心得.记下来勉励自己.
Spring的ACEGI的应用
pring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。 Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件...
这里包括Spring Security2的中文文档和一个基于Dao的开发实例,相信不管是对原来基于Acegi安全框架的开发人员还是现在基于Spring安全框架(Spring Security2实际上是Acegi2)的开发人员都有参考价值.
spring Acegi例子,很简单的一个acegi实例,容易理解
1、搭建基本的Spring Security项目 2、使用数据库管理用户权限 3、自定义认证数据库表结构 4、自定义登录页面 5、使用数据库管理资源 6、控制用户信息 MD5加密 获取当前用户信息 7、自定义访问拒绝页面 8、动态...
Spring acegi 3 文档 Spring acegi 3 文档Spring acegi 3 文档 Spring acegi 3 文档
16. acegi到spring security的转换方式 16.1. Spring Security是什么 16.2. 目标 16.3. 步骤 16.4. 总结 V. 高级话题 17. 领域对象安全(ACLs) 17.1. 概述 17.2. 关键概念 17.3. 开始 18. 预认证...
Spring ACEGI手册(部份) 博文链接:https://allenj2ee.iteye.com/blog/129321
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。
Spring源代码解析(九):Spring_Acegi框架鉴权的实现.doc