目錄
- 一、介紹
- 二、原了解析
-
- 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();
}
}