最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot3整合SpringSecurity6快速入門示例教程

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

寫在前面

不知道小伙伴們在學SpringSecurity過程中有沒有和我一樣的經歷和煩惱。

①看完一篇文章或者一個教程,感覺學會了。但是一到實際項目中就不知道怎么用;

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

③技術更新迭代非常快,網上一些文章教程知識點已經過時了,在新版本中已經不適用了。

曉凡在學習過程中也同樣遇到了這些問題,也被勸退過。但是,現在的安全框架也就那么幾個,難啃也得硬著頭皮上。

原本打算一篇文章寫完,但是基于SprintSecurity涉及到的知識點確實挺多,文章篇幅肯定很長。

基于這些原因,曉凡打算將SpringBoot3整合SpringSecurity6寫成一個系列文章,文章盡可能的通俗易懂,循序漸進,并穿插實際項目開發(fā)實例。

讓小伙伴們學起來沒啥壓力,學完之后能將SpringSecurity運用到實際項目中。

當然,每個人的理解方式不同,可能有些重要的細節(jié)沒講到位,歡迎大家在評論區(qū)提問。受限于個人水平,一定有說的不對的地方,大家理解一下,友善白嫖哈。

一、環(huán)境說明

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

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

二、SpringSecurity 簡介

SpringSecurity Spring大家族中一名重要成員,是專門負責安全的框架。

提到安全框架,做過Java開發(fā)的小伙伴可能還聽說過Shiro。Shiro相對于Spring Security來說,更加簡單。一般小型項目使用得比較多,

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

Spring Security 能為項目做什么呢?

我們來看看官方文檔:https://docs.spring.io/spring-security/reference/index.html怎么說的?

翻譯過來大概就是:Spring Security 是一個提供了身份驗證、授權防止常見攻擊的功能的框架。

三、常用名詞解釋

上面提到了身份驗證授權防止常見攻擊 三個專業(yè)名詞。曉凡這里以小區(qū)中的保安系統來說明,大家肯定就秒懂了。

為了小區(qū)的安全,小區(qū)上了保安系統,確保只有合法的居民可以進入小區(qū),并且他們只能訪問自己的家,同時防止小偷和法外狂徒張三進來搗亂。

身份認證(Authentication)

  • 就是確認你是誰的過程。Spring Security 會要求你提供一些信息,比如用戶名和密碼,然后它會檢查這些信息是否正確。如果信息正確,就相當于給你發(fā)了一張小區(qū)的門禁卡,你就可以進入小區(qū)了。

授權(Authorization)

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

防御常見攻擊

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

四、快速入門

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

4.1 搭建一個Spring Boot Web項目

① 創(chuàng)建SecurityQuickStart項目

② 創(chuàng)建controller

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

③ 啟動項目,瀏覽器訪問/hello接口

瀏覽器中訪問:http://localhost:8080/hello

4.2 引入SpringSecurity

① 引入依賴

SpringBoot項目中使用SpringSecurity,我們只需要引入如下依賴即可

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

② 訪問接口

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

這時候,我們發(fā)現hello接口不能訪問了,而是跳轉到一個登錄頁面:http://localhost:8080/login

這時候我們需要輸入用戶名和密碼才能訪問接口

用戶名默認為:user

密碼會在控制臺中打印出來

注意:如果你沒使用魔法上網,可能登錄頁面會如下圖所示一樣

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

點擊"Sign in"進行登錄,就可以正常訪問接口了

4.3 配置默認用戶/密碼

默認情況下SpringSecurity 會為我們默認生成一個user用戶,密碼采用uuid隨機生成(通過下圖中SecurityProperties類的靜態(tài)內部類user生成)。

我們還可以通過application.yml配置文件來配置用戶名和密碼

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

通過上面配置之后,控制臺將不再輸出隨機生成的密碼,我們也可以通過admin/123456 登錄

4.4 注銷

既然能登陸,那必然也是可以注銷的。

我們只需瀏覽器輸入:http://localhost:8080/logout 然后點擊Log Out 即可注銷

五、SpringSecurity 默認做了什么?

到這兒,我們算是正是入門了。其實我們出了引入依賴,其他啥也沒干。那么SpringSecurity默認為我們做了些什么?

① 保護我們創(chuàng)建的/hello接口,不是隨便一個老王就能來訪問,要求對應用程序的任何交互進行身份驗證;

② 程序啟動時生成一個默認用戶“user”;

③ 生成一個默認的隨機密碼,并將此密碼記錄在控制臺上;

④ 生成默認的登錄表單和注銷頁面,并提供登錄和注銷功能;

⑤ 對于請求,重定向到登錄頁面

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

相關文章

  • java線程池ThreadPoolExecutor類使用小結

    java線程池ThreadPoolExecutor類使用小結

    這篇文章主要介紹了java線程池ThreadPoolExecutor類使用,本文主要對ThreadPoolExecutor的使用方法進行一個詳細的概述,示例代碼介紹了ThreadPoolExecutor的構造函數的相關知識,感興趣的朋友一起看看吧
    2022-03-03
  • Java實現的mysql事務處理操作示例

    Java實現的mysql事務處理操作示例

    這篇文章主要介紹了Java實現的mysql事務處理操作,結合實例形式較為詳細的分析了Java基于JDBC操作mysql數據庫實現事務處理的相關概念、操作技巧與注意事項,需要的朋友可以參考下
    2018-08-08
  • Mybatis-plus更新字段update_by失敗問題

    Mybatis-plus更新字段update_by失敗問題

    在遇到實體類字段更新不正確的問題時,首先復現問題,確定受影響的字段,使用Debug模式查看變量的實際賦值情況,通過查看執(zhí)行的SQL語句,確認SQL是否正確反映了預期的更新,如出現問題,可以參考Mybatis-plus官網的解決方案
    2024-09-09
  • java中的匿名內部類總結

    java中的匿名內部類總結

    這篇文章主要介紹了 java中的匿名內部類總結的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Springboot?過濾器、攔截器、全局異常處理的方案處理小結

    Springboot?過濾器、攔截器、全局異常處理的方案處理小結

    攔截器是一種動態(tài)攔截方法調用的機制,與過濾器類似,是Spring框架中提供的,用來動態(tài)攔截控制器方法的執(zhí)行,這篇文章主要介紹了Springboot?過濾器、攔截器、全局異常處理,需要的朋友可以參考下
    2024-03-03
  • java內存占用高案例

    java內存占用高案例

    本文主要介紹了java內存占用高案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-08-08
  • mybatis實現圖書管理系統

    mybatis實現圖書管理系統

    這篇文章主要為大家詳細介紹了mybatis實現圖書管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Java調用打印機的2種方式舉例(無驅/有驅)

    Java調用打印機的2種方式舉例(無驅/有驅)

    我們平時使用某些軟件或者在超市購物的時候都會發(fā)現可以使用打印機進行打印,這篇文章主要給大家介紹了關于Java調用打印機的2種方式,分別是無驅/有驅的相關資料,需要的朋友可以參考下
    2023-11-11
  • SpringBoot使用minio進行文件管理的流程步驟

    SpringBoot使用minio進行文件管理的流程步驟

    MinIO 是一個高性能的對象存儲系統,兼容 Amazon S3 API,該軟件設計用于處理非結構化數據,如圖片、視頻、日志文件以及備份數據等,本文給大家介紹了SpringBoot使用minio進行文件管理的流程步驟,需要的朋友可以參考下
    2025-01-01
  • 深入理解Java中的克隆

    深入理解Java中的克隆

    想必大家對克隆都有耳聞,世界上第一只克隆羊多莉就是利用細胞核移植技術將哺乳動物的成年體細胞培育出新個體,甚為神奇。其實在Java中也存在克隆的概念,即實現對象的復制。本文將嘗試介紹一些關于Java中的克隆和一些深入的問題,希望可以幫助大家更好地了解克隆。
    2016-08-08

最新評論

商南县| 台南县| 定州市| 石阡县| 绍兴市| 盐亭县| 疏勒县| 介休市| 福建省| 公安县| 普宁市| 安塞县| 克什克腾旗| 桂东县| 阜阳市| 吉安县| 奉化市| 文成县| 海兴县| 涞水县| 紫云| 桃园市| 屯留县| 赤城县| 巨鹿县| 盈江县| 工布江达县| 多伦县| 潼关县| 称多县| 扎赉特旗| 突泉县| 夏河县| 郓城县| 三河市| 保山市| 临澧县| 武清区| 宁南县| 惠安县| 拉萨市|