SpringSecurity 是什么?
SpringSecurity的模块
开始SpringSecurity
SpringSecurity maven的最小依赖
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
过滤Web请求
SpringSecurity借助一系列ServletFilter来提供各种安全性功能。
DelegatingFilterProxy是一个特殊的ServletFilter,它本身所做的工作并不多,只是将工作委托给一个javax.servlet.Filter类,这个实现类作为一个Bean注册到Spring应用的上下文中。
web.xml中配置DelegatingFilterProxy:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Java 的方式配置DelegatingFilterProxy:
public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer{
}
AbstractSecurityWebApplicationInitializer实现了WebApplicationInitializer,因此Spring会发现它,并用它在Web容器中注册DelegatingFilterProxy。
不管通过web.xml还是通过AbstractSecurityWebApplicationInitializer的子类来配置DelegatingFilterProxy,它都会拦截发往应用中的请求,并将请求委托给ID为springSecurityFilterChain 的Bean.
编写简单的安全性配置
启用web安全性功能的最简单配置:
@Configuration
@EnableWebSecurity // 启用web安全
public class SecurityConfig extends WebSecurityConfigurerAdapter{
}
@EnableWebSecurity注解将会启用Web安全功能,Spring Security必须配置在一个实现了WebSecurityConfigurer的Bean中,或者简单起见扩展WebSecurityConfigurerAdapter。
指定Web安全的细节,通过重载WebSecurityConfigurerAdapter中的configure()方法,这个过程中会使用传递进来的参数设置行为。