- Spring Security 是一种基于Spring AOP 和Servlet 规范中的Filter 实现的安全框架
- Spring Security 充分利用了依赖注入DI 和面向切面技术
- Spring Securty 使用Servlet 规范中的Filter 保护web 请求并限制url 级别的访问。它还使用了Spring AOP 保护方法的调用——借助于对象代理和使用通知。
- 引入core,web 和config 模块
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.2.RELEASE</version>
</dependency>
- 过滤web 请求,Spring Security 借助一系列Servlet Filter 来提供各种安全功能。DelegatingFilterProxy 是一个特殊的Servlet Filter,它将工作委托给一个Filter 实现类,这个实现类作为一个<bean>注入到Spring 应用上下文中。 实际上,它会拦截请求,并将请求委托给id 为springSecurityFilterChain 的bean。
- springSecurityFilterChain 本身是一个特殊的Filter,被称为FilterChainProxy,它可以链接多个其他Filter。当启动web 安全性时,会自动创建Spring Security 依赖的一系列Filter。
1、借助WebApplicationInitializer 以java 方式配置DelegatingFilterProxy,AbstractSecurityWebApplicationInitializer 实现了WebApplicationInitializer,因此Spring 会发现它,并在web 容器中注册DelegatingFilterProxy
package com.qhf.config;
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
/