?作者簡介:大家好,我是Leo,熱愛Java后端開發者,一個想要與大家共同進步的男人😉😉
🍎個人主頁:Leo的博客
💞當前專欄: Java從入門到精通
?特色專欄: MySQL學習
🥭本文內容:SpringSecurity6 | 自定義認證規則
📚個人知識庫 :知識庫,歡迎大家訪問
學習參考 :
- 講師:孫帥老師
- 課程:孫哥說SpringSecurity6
1.前言
大家好,我是Leo哥🫣🫣🫣,接到上一節,我們學習了如何修改SpringSecurity默認用戶,使用我們自己的自定義的用戶名和密碼來進行認證登錄。但是有時候我們的開發者可能并不是所有的接口都需要進行攔截,就比如,登錄,注冊接口等這些是不是要進行攔截的,那么如何修改并自定義這些規則。沒錯這就是我們本節的重點。好了,話不多說讓我們開始吧😎😎😎。
2.環境搭建
本篇我們開始搭建一個新的模塊,并取名為custom。具體搭建過程大家可以自行搭建,我這里就不在贅述了哈。
我已經搭建好了基本工程,并定義好了兩個接口,以及自定義我們的登錄用戶名以及密碼。
下面我們直接啟動SpringBoot工程。
通過http://localhost:8600/test訪問test接口
通過http://localhost:8600/hello訪問hello接口
發現他都經過認證,至此我們基本環境介紹就到這里。
3.自定義規則
3.1 概述
在SpringSecurity6中,我們原本在原來SpringSecurity實現的方法已經被拋棄,已經完全不能用了。
我們在SpringSecurity6可以這樣進行實現。
- 首先自定義一個配置類,我這里命名為MySecurityConfig.java。
- 然后實現@EnableWebSecurity注解,并向Spring中注入一個Bean對象SecurityFilterChain。
- 后面我們都是通過這樣實現方式的。
- 最后我們就可以開始自定義我們的規則了。
3.2 規則
- 放行hello接口。
- 除了hello接口,其他接口都需要進行認證。
- 開啟表單認證。
直接上代碼。
package org.javatop.custom.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;/*** @author : Leo* @version 1.0* @date 2023-12-09 17:45* @description :*/
@Configuration
@EnableWebSecurity
public class MySecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeRequests().requestMatchers("/hello").permitAll() // 放行改資源,不用認證可以直接訪問.anyRequest().authenticated() // 所有請求都需要認證.and().formLogin(); // 開啟表單登錄return http.build();}
}
最后我們重啟項目然后看效果是不是按照我們配置這樣的。
首先訪問http://localhost:8600/hello接口,發現確實沒有通過認證可以直接訪問,說明我們的配置類生效了。
然后訪問http://localhost:8600/test接口,發現我們需要進行登錄認證之后才可以訪問。
3.3 拓展
當然也不是需要通過一個一個加然后進行配置,我們如果需要放行多個接口,我們可以通過進行以下配置。
直接在后面加上你需要放行的接口路徑即可。
4.總結
以上便是本文的全部內容,本人才疏學淺,文章有什么錯誤的地方,歡迎大佬們批評指正!我是Leo,一個在互聯網行業的小白,立志成為更好的自己。
如果你想了解更多關于Leo,可以關注公眾號-程序員Leo,后面文章會首先同步至公眾號。