欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot3整合SpringSecurity6快速入門(mén)示例教程

 更新時(shí)間:2025年04月18日 10:00:55   作者:程序員曉凡  
SpringSecurity 是Spring大家族中一名重要成員,是專(zhuān)門(mén)負(fù)責(zé)安全的框架,本文給大家介紹SpringBoot3整合SpringSecurity6快速入門(mén)示例教程,感興趣的朋友一起看看吧

寫(xiě)在前面

不知道小伙伴們?cè)趯W(xué)SpringSecurity過(guò)程中有沒(méi)有和我一樣的經(jīng)歷和煩惱。

①看完一篇文章或者一個(gè)教程,感覺(jué)學(xué)會(huì)了。但是一到實(shí)際項(xiàng)目中就不知道怎么用;

②被SprintSecurity 源碼和各種專(zhuān)業(yè)名詞搞得一頭霧水,不知道如何下手,直接勸退;

③技術(shù)更新迭代非??欤W(wǎng)上一些文章教程知識(shí)點(diǎn)已經(jīng)過(guò)時(shí)了,在新版本中已經(jīng)不適用了。

曉凡在學(xué)習(xí)過(guò)程中也同樣遇到了這些問(wèn)題,也被勸退過(guò)。但是,現(xiàn)在的安全框架也就那么幾個(gè),難啃也得硬著頭皮上。

原本打算一篇文章寫(xiě)完,但是基于SprintSecurity涉及到的知識(shí)點(diǎn)確實(shí)挺多,文章篇幅肯定很長(zhǎng)。

基于這些原因,曉凡打算將SpringBoot3整合SpringSecurity6寫(xiě)成一個(gè)系列文章,文章盡可能的通俗易懂,循序漸進(jìn),并穿插實(shí)際項(xiàng)目開(kāi)發(fā)實(shí)例。

讓小伙伴們學(xué)起來(lái)沒(méi)啥壓力,學(xué)完之后能將SpringSecurity運(yùn)用到實(shí)際項(xiàng)目中。

當(dāng)然,每個(gè)人的理解方式不同,可能有些重要的細(xì)節(jié)沒(méi)講到位,歡迎大家在評(píng)論區(qū)提問(wèn)。受限于個(gè)人水平,一定有說(shuō)的不對(duì)的地方,大家理解一下,友善白嫖哈。

一、環(huán)境說(shuō)明

現(xiàn)在技術(shù)更新迭代真的很快,不少小伙伴還在抱怨,怎么又更新了,學(xué)不動(dòng)了。曉凡也采用當(dāng)前最新穩(wěn)定版本的進(jìn)行講解,具體如下

  • SpringBoot 3.2.0
  • SpringSecurity 6.2.0
  • JDK 17
  • MySQL 8.0

二、SpringSecurity 簡(jiǎn)介

SpringSecurity Spring大家族中一名重要成員,是專(zhuān)門(mén)負(fù)責(zé)安全的框架。

提到安全框架,做過(guò)Java開(kāi)發(fā)的小伙伴可能還聽(tīng)說(shuō)過(guò)Shiro。Shiro相對(duì)于Spring Security來(lái)說(shuō),更加簡(jiǎn)單。一般小型項(xiàng)目使用得比較多,

這里就不展開(kāi)說(shuō)了,感興趣的小伙伴可以評(píng)論區(qū)留言,曉凡后面出教程。Spring Security一般用在中大型項(xiàng)目中。

Spring Security 能為項(xiàng)目做什么呢?

我們來(lái)看看官方文檔:https://docs.spring.io/spring-security/reference/index.html怎么說(shuō)的?

翻譯過(guò)來(lái)大概就是:Spring Security 是一個(gè)提供了身份驗(yàn)證授權(quán)防止常見(jiàn)攻擊的功能的框架。

三、常用名詞解釋

上面提到了身份驗(yàn)證、授權(quán)防止常見(jiàn)攻擊 三個(gè)專(zhuān)業(yè)名詞。曉凡這里以小區(qū)中的保安系統(tǒng)來(lái)說(shuō)明,大家肯定就秒懂了。

為了小區(qū)的安全,小區(qū)上了保安系統(tǒng),確保只有合法的居民可以進(jìn)入小區(qū),并且他們只能訪問(wèn)自己的家,同時(shí)防止小偷和法外狂徒張三進(jìn)來(lái)?yè)v亂。

身份認(rèn)證(Authentication)

  • 就是確認(rèn)你是誰(shuí)的過(guò)程。Spring Security 會(huì)要求你提供一些信息,比如用戶(hù)名和密碼,然后它會(huì)檢查這些信息是否正確。如果信息正確,就相當(dāng)于給你發(fā)了一張小區(qū)的門(mén)禁卡,你就可以進(jìn)入小區(qū)了。

授權(quán)(Authorization)

  • 就是決定你可以做什么的過(guò)程。即使你進(jìn)了小區(qū),也不能隨便去別人家。Spring Security 會(huì)檢查你是否有權(quán)限去某個(gè)地方,比如你的家。你有權(quán)限,就可以進(jìn)入;而隔壁老王,沒(méi)有你家的權(quán)限,就會(huì)被拒之門(mén)外。

防御常見(jiàn)攻擊

  • 就像小區(qū)保安要防止小偷和張三一樣,Spring Security 也提供了很多功能來(lái)防止各種網(wǎng)絡(luò)攻擊:
    • CSRF(跨站請(qǐng)求偽造):防止有人偽造你的請(qǐng)求,比如在你不知情的情況下,讓你的賬號(hào)發(fā)一些你不想要的帖子。
    • XSS(跨站腳本攻擊):防止有人通過(guò)網(wǎng)頁(yè)注入惡意腳本,偷取你的個(gè)人信息。
    • SQL注入:防止有人通過(guò)輸入特殊的命令,來(lái)操縱數(shù)據(jù)庫(kù),獲取或破壞數(shù)據(jù)。
    • 點(diǎn)擊劫持:防止有人通過(guò)一些手段,讓你在不知情的情況下點(diǎn)擊一些鏈接,從而執(zhí)行一些你不想執(zhí)行的操作。

四、快速入門(mén)

說(shuō)了一堆理論知識(shí),下面曉凡帶著大家敲代碼,快速上手

4.1 搭建一個(gè)Spring Boot Web項(xiàng)目

① 創(chuàng)建SecurityQuickStart項(xiàng)目

② 創(chuàng)建controller

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "曉凡,你好!";
    }
}

③ 啟動(dòng)項(xiàng)目,瀏覽器訪問(wèn)/hello接口

瀏覽器中訪問(wèn):http://localhost:8080/hello

4.2 引入SpringSecurity

① 引入依賴(lài)

SpringBoot項(xiàng)目中使用SpringSecurity,我們只需要引入如下依賴(lài)即可

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

② 訪問(wèn)接口

依然在瀏覽器中輸入:http://localhost:8080/hello

這時(shí)候,我們發(fā)現(xiàn)hello接口不能訪問(wèn)了,而是跳轉(zhuǎn)到一個(gè)登錄頁(yè)面:http://localhost:8080/login

這時(shí)候我們需要輸入用戶(hù)名和密碼才能訪問(wèn)接口

用戶(hù)名默認(rèn)為:user

密碼會(huì)在控制臺(tái)中打印出來(lái)

注意:如果你沒(méi)使用魔法上網(wǎng),可能登錄頁(yè)面會(huì)如下圖所示一樣

遇到這樣的,小伙伴也不用慌,這是由于訪問(wèn)不了bootstrap.min.css樣式造成的,并不影響正常業(yè)務(wù)流程

點(diǎn)擊"Sign in"進(jìn)行登錄,就可以正常訪問(wèn)接口了

4.3 配置默認(rèn)用戶(hù)/密碼

默認(rèn)情況下SpringSecurity 會(huì)為我們默認(rèn)生成一個(gè)user用戶(hù),密碼采用uuid隨機(jī)生成(通過(guò)下圖中SecurityProperties類(lèi)的靜態(tài)內(nèi)部類(lèi)user生成)。

我們還可以通過(guò)application.yml配置文件來(lái)配置用戶(hù)名和密碼

spring:
  security:
    user:
      password: 123456
      name: admin

通過(guò)上面配置之后,控制臺(tái)將不再輸出隨機(jī)生成的密碼,我們也可以通過(guò)admin/123456 登錄

4.4 注銷(xiāo)

既然能登陸,那必然也是可以注銷(xiāo)的。

我們只需瀏覽器輸入:http://localhost:8080/logout 然后點(diǎn)擊Log Out 即可注銷(xiāo)

五、SpringSecurity 默認(rèn)做了什么?

到這兒,我們算是正是入門(mén)了。其實(shí)我們出了引入依賴(lài),其他啥也沒(méi)干。那么SpringSecurity默認(rèn)為我們做了些什么?

① 保護(hù)我們創(chuàng)建的/hello接口,不是隨便一個(gè)老王就能來(lái)訪問(wèn),要求對(duì)應(yīng)用程序的任何交互進(jìn)行身份驗(yàn)證;

② 程序啟動(dòng)時(shí)生成一個(gè)默認(rèn)用戶(hù)“user”;

③ 生成一個(gè)默認(rèn)的隨機(jī)密碼,并將此密碼記錄在控制臺(tái)上;

④ 生成默認(rèn)的登錄表單和注銷(xiāo)頁(yè)面,并提供登錄和注銷(xiāo)功能;

⑤ 對(duì)于請(qǐng)求,重定向到登錄頁(yè)面

到此這篇關(guān)于SpringBoot3整合SpringSecurity6(一)快速入門(mén)的文章就介紹到這了,更多相關(guān)SpringBoot整合SpringSecurity內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論