`
孙宁振
  • 浏览: 35074 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类

spring security 2.0相对1.0配置的简化

阅读更多

spring security 2.0的配置文件可以使用spring2.0的命名空间配置,大大减少了配置量,最显著的一点就是省掉了那个长长的filter串。
1.0时需要先配置一个filter代理,由filter代理来执行acegi其他的功能filter:

	<bean id="filterChainProxy"
		class="org.acegisecurity.util.FilterChainProxy">
		<property name="filterInvocationDefinitionSource">
			<!--所有需要用的acegi的filter都必须按顺序在这排列好-->
			<value>
				CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
				PATTERN_TYPE_APACHE_ANT
				/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
			</value>
		</property>
	</bean>


web.xml里配置filter代理:

	<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>


然后再一个一个配置相应的功能filter,相当繁琐。

2.0只需要

    <security:http auto-config="true">
    </security:http>


web.xml里:

	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


ss就会自动代理几个基本的功能filter(如AuthenticationProcessingFilter),filter也有了默认配置,不必在一个个去配置。
使用security命名空间需要将spring配置文件的头上加上security命名空间的xsd:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
            http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd">
。。。
</beans>


security:http标签内还可以包含其他的功能标签,如:

    <security:http auto-config="true">
        <security:anonymous
            granted-authority="${security.anonymous.authorities}" />
    </security:http>

可以提供匿名访问支持,相当于1.0时的非基本的功能filter,remember-me等也可以这样实现。

不过事实上ss的默认实现是很简陋的,提供的demo里都是使用内存数据库,权限配置也都是写死到配置文件里,根本无法在项目中应用,进行相应的扩展是不可避免的。
ss也提供了覆盖默认配置的方法:<security:custom-filter position="alias"/>,position为相应filter的别名。

 对应关系:

CHANNEL_FILTER ChannelProcessingFilter
CONCURRENT_SESSION_FILTER ConcurrentSessionFilter
SESSION_CONTEXT_INTEGRATION_FILTER HttpSessionContextIntegrationFilter
LOGOUT_FILTER LogoutFilter
X509_FILTER X509PreAuthenticatedProcessigFilter
PRE_AUTH_FILTER Subclass of AstractPreAuthenticatedProcessingFilter
CAS_PROCESSING_FILTER CasProcessingFilter
AUTHENTICATION_PROCESSING_FILTER AuthenticationProcessingFilter
BASIC_PROCESSING_FILTER BasicProcessingFilter
SERVLET_API_SUPPORT_FILTER classname
REMEMBER_ME_FILTER RememberMeProcessingFilter
ANONYMOUS_FILTER AnonymousProcessingFilter
EXCEPTION_TRANSLATION_FILTER ExceptionTranslationFilter
NTLM_FILTER NtlmProcessingFilter
FILTER_SECURITY_INTERCEPTOR FilterSecurityInterceptor
SWITCH_USER_FILTER SwitchUserProcessingFilter

比如:

    <bean id="logoutFilter"
        class="org.springframework.security.ui.logout.LogoutFilter">
        <security:custom-filter position="LOGOUT_FILTER" />
        <!-- 退出后指向的 URL -->
        <constructor-arg value="${security.logout_success_url}" />
        <constructor-arg>
            <list>
                <bean
                    class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />\
            </list>
        </constructor-arg>
        <property name="filterProcessesUrl"
            value="${security.logout_processes_url}" />
    </bean>


这个filter将覆盖默认的logoutFilter

 

 

6
0
分享到:
评论
3 楼 kitta 2008-12-19  
其实我对如何用命名空间简化配置文件更感兴趣!
2 楼 niukai_2000 2008-09-12  
顶一个,辛苦了!
1 楼 孙宁振 2008-07-12  
引用
楼主什么时候能对扩展进行详细讲解呢?

最近工作有点忙,等过一阵时间宽松点我会写一篇基本的扩展说明。
谢谢支持。。。

相关推荐

    《Spring Boot2.0项目开发综合实训》指导手册v1.0

    《Spring Boot2.0项目开发综合实训》指导手册v1.0是一本专注于Java开发者学习Spring Boot 2.0框架的实战教程。该手册详细介绍了如何利用Spring Boot 2.0进行高效、便捷的Web应用开发,涵盖了从基础概念到高级特性的...

    Spring security oauth源码

    Spring Security OAuth 是一个用于保护RESTful Web服务的框架,它为OAuth 1.0a和OAuth 2.0协议提供了全面的支持。在这个源码中,我们可能会看到如何将Spring Security与OAuth结合,以构建安全的Web应用程序和服务。...

    spring2.0技术手册--林信良

    《Spring 2.0 技术手册》是继 Spring 1.0 之后的重要著作,作者林信良针对 Spring 框架在 2.0 版本中的新特性进行了深入剖析与讲解。本书不仅适合于已经有一定 Java 开发基础的学习者,也适用于想要深入了解 Spring ...

    Spring-Security安全权限管理手册

    - **使用命名空间配置方式**:从2.0版本开始,Spring Security引入了一种新的命名空间配置方式,这种方式可以极大地简化配置文件的编写工作。通过这种方式,开发者可以用较少的代码实现相同的功能。 #### 四、结论 ...

    spring boot2.0总结介绍

    * 使用 Spring Boot 的自动配置机制来简化配置 Spring Boot 2.0 的使用方法 要使用 Spring Boot 2.0,需要按照以下步骤进行: 1. 创建 Maven 或 Gradle 项目 2. 添加 Spring Boot 依赖项 3. 配置 application....

    Spring2.0(一)第一个Spring程序、IoC的应用

    7. **组件扫描与自动装配**:在Spring 2.0中,可以通过组件扫描(Component Scanning)和自动装配(Auto Wiring)进一步简化配置。组件扫描可以自动发现类上的特定注解,如`@Component`,然后将其注册为bean。自动...

    spring-security-oauth-1.0.2.RELEASE.zip

    4. **Spring Security OAuth**:它是Spring Security的扩展,提供了OAuth 1.0a和2.0的支持,帮助开发者轻松实现OAuth安全机制。 5. **OAuth的用例**:常用于API保护,例如Web应用调用API,移动应用访问服务器资源等...

    spring-framework-5.0.8.RELEASE官方完整包加官方文档

    9. **JMS和AMQP更新**:对于消息传递,Spring 5提供了更好的JMS 2.0和AMQP 1.0支持,简化了消息驱动应用程序的开发。 10. **REST客户端改进**:RestTemplate被替换为更强大的WebClient,提供了非阻塞和反应式的HTTP...

    Spring Boot 实战教程,由浅入深详细介绍springboot的使用

    该框架使用了特定的方式(如自动配置)来简化Spring应用的整个搭建过程,让配置变得更简单,减少样板代码。 **2.2 Spring Boot 历史** Spring Boot 于 2014 年初首次发布,随着 Spring 框架的发展而不断更新和完善...

    spring升级版.pdf

    2006年发布的Spring 2.0版本开始支持注解,极大地方便了基于注解的配置。2009年的Spring 3.0版本对模块进行了重组,并提供了基于Java的Bean配置(JavaConfig),同时开始支持REST风格的Web服务。这一系列版本的更新...

    JMS与Spring之一(用JmsTemplate同步收发消息)

    接着,需要创建app-context.xml文件,用于配置Spring的应用程序上下文。该文件的内容如下: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    llmall:基于springboot2.0+angular1.x+mysql+mybatis+redis商城系统1.0

    首先,Spring Boot 2.0 是整个系统的基础,它简化了Spring应用的初始化和配置过程。Spring Boot以其依赖管理和自动配置特性,使得开发者能够快速搭建项目,同时提供内置的Tomcat服务器,支持热部署,极大地提高了...

    [新闻文章]锋网新闻发布V1.0_ijspnewsv1.0.rar

    这部分可能通过Spring Security或Apache Shiro等安全框架实现。 4. **新闻管理**:系统应提供新闻的添加、编辑、删除、查找和排序等功能。新闻可能还可以关联图片、视频等多媒体资源,并支持富文本编辑。 5. **...

    基于java语言开发的基于Microsoft Graph Restful API的多全局管理系统.zip

    此外,系统可能涉及到的Java技术栈包括Spring Boot框架,这是一个快速开发微服务的利器,它简化了配置并提供了丰富的功能,如自动配置、内嵌Web服务器、数据访问支持等。Spring Security则可以用来处理OAuth 2.0授权...

    spring-boot-keycloak-example:Spring Boot(2.1.9.RELEASE)安全性与Keycloak 4.0.0结合使用的示例

    这通常可以通过在`pom.xml`文件中引入`keycloak-spring-boot-starter`依赖来实现,它会自动配置Spring Security以与Keycloak服务器通信。同时,我们需要在`application.properties`或`application.yml`中配置...

    cas 单点登录 demo

    Spring Boot是基于Spring框架的快速开发工具,它简化了配置并提供了“开箱即用”的特性。在SSO场景中,Spring Boot用于构建服务端和客户端应用。其核心特性包括自动配置、内嵌Web服务器(如Tomcat或Jetty)、以及对...

    Exploring OAuth and Spring Social

    - **OAuth 2.0**简化了流程并增加了更多的安全性,涉及的角色包括: - **Resource Owner**(资源所有者):拥有资源的用户。 - **Client**(客户端):请求访问资源的应用程序。 - **Resource Server**(资源...

    单点登录的基本jar包

    在Java中,这可能是一个基于Servlet Filter的实现,如Spring Security或Apache Shiro等框架提供的功能。 2. **共享票据存储**:验证后的票据需要在各个系统间共享,可以是内存、数据库或分布式缓存等存储方式。 3....

Global site tag (gtag.js) - Google Analytics