目录
- 一、介绍
- 二、原理解析
-
- 2.1 @EnableWebSecurity
- 2.2 spring-boot-starter-security
- 三、小结(引入 security 两种方式)
-
- 3.1 引入 starter
- 3.2 直接引入 对应的包
- 四、配置全部放过
一、介绍
上一节Spring security源码解析系列01— 创建一个简单项目 已经启动了一个 简单的项目,主要就是在pom.xml 里面引入的 两个 依赖 ,启动的时候就 已经可以进行相关的验证了, 也没有进行配置 是否开启@EnableWebSecurity,就自动生效了
主要的核心配置 pom.xml 就是 如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
那到底要不要 配置 开启 @EnableWebSecurity ?下面来 详细分析
二、原理解析
2.1 @EnableWebSecurity
我们打开 注解 EnableWebSecurity

这里主要是 通过 @Import 注册 WebSecurityConfiguration.class 类,和 OAuth2相关的 等其他的配置信息 来达到 启动之后 注册 验证的功能.
WebSecurityConfiguration.class 类 的 详细功能在后面章节详细分析.
2.2 spring-boot-starter-security
如果我们引入了 spring-boot-starter-security 这类 starter 包, 我们可以进一步点击进去看一下,里面 自动依赖了哪些 jar 包.
首先 引入了 security 的两个核心包 , spring-security-web,spring-security-config , 而这两个包 都是依赖 spring-security-core ,这三个jar 是 security 的 必须要的,也可以通过手动指定.
另外一个 就是 spring-boot-starter, 这个包 是需要 引入 spring-boot-autoconfigure 这个 包的,关键就在这里 ,autoconfigure 是通过SPI 自动加载注册一些需要的类 .
打开 对应的jar 包下面的 META-INF/spring.factories,
这里默认已经 自动注入了 Security 的 自动配置类 SecurityAutoConfiguration.class
三、小结(引入 security 两种方式)
3.1 引入 starter
引入 starter 这类jar, SpringBoot 会 自动 动过 autoconfigure 自动来加载注入 相关的security 配置信息
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
这种方式 会自动加载对应的配置 ,可以不用 配置@EnableWebSecurity
3.2 直接引入 对应的包
其实对应的包就一共三个,可以自行配置, 比如spring mvc 项目 配置 之后 需要加入.
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.3.5.RELEASE</version>
</dependency>
这种方式就要配置开启 @EnableWebSecurity 不然不生效
四、配置全部放过
新建一个类, 继承WebSecurityConfigurerAdapter 类, 重写一下 ,对所有的url 都放过,如下:
@Component
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/").permitAll();
}
}