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

SpringBoot使用Sa-Token實現(xiàn)路徑攔截和特定接口放行

 更新時間:2024年06月12日 08:23:42   作者:IT小輝同學(xué)  
這篇文章主要介紹了SpringBoot使用Sa-Token實現(xiàn)路徑攔截和特定接口放行,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

1. 引入依賴

首先,在pom.xml文件中引入Sa-Token相關(guān)的依賴。Sa-Token是一個輕量級的Java權(quán)限認(rèn)證框架,可以幫助我們輕松實現(xiàn)用戶登錄狀態(tài)的管理和權(quán)限認(rèn)證。

<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot-starter</artifactId>
    <version>1.27.0</version>
</dependency>

2. 創(chuàng)建配置類 SecurityProperties

定義一個配置類SecurityProperties,用于讀取和存儲從配置文件中加載的排除路徑信息。這里使用了Spring Boot的@ConfigurationProperties注解來綁定配置文件中的屬性。

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;

@Data
@Component
@ConfigurationProperties(prefix = "security")
public class SecurityProperties {
    /**
     * 排除路徑
     */
    private String[] excludes;
}
  • @Data:這是Lombok的注解,自動生成getter和setter方法。
  • @Component:將該類注冊為Spring的組件。
  • @ConfigurationProperties:指定前綴security,從配置文件中讀取以該前綴開頭的屬性,并將這些屬性映射到該類的字段上。

3. 編寫配置文件

在配置文件application.yml或者application.properties中,配置需要排除的路徑。例如:

application.yml:

security:
  excludes:
    - "/public/**"
    - "/login"
    - "/register"

application.properties:

security.excludes=/public/**,/login,/register
  • /public/**:排除所有以/public/開頭的路徑。
  • /login:排除/login路徑。
  • /register:排除/register路徑。

4. 配置攔截器

創(chuàng)建一個配置類WebConfig,實現(xiàn)WebMvcConfigurer接口,在其中配置Sa-Token的攔截器,并將排除的路徑應(yīng)用到攔截器中。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private SecurityProperties securityProperties;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SaInterceptor(handler -> {
            // 獲取所有的URL并進(jìn)行檢查
            SaRouter.match("/**").check(() -> {
                // 檢查是否登錄
                StpUtil.checkLogin();
            });
        }))
        .addPathPatterns("/**")  // 攔截所有路徑
        .excludePathPatterns(securityProperties.getExcludes());  // 排除指定路徑
    }
}
  • @Configuration:標(biāo)識這是一個配置類。
  • addInterceptors:重寫該方法,向Spring的攔截器注冊中心添加自定義的攔截器。
  • SaInterceptor:Sa-Token提供的攔截器,主要用于權(quán)限驗證。
  • SaRouter.match("/**"):匹配所有路徑。
  • StpUtil.checkLogin():Sa-Token提供的登錄狀態(tài)檢查方法,用于驗證用戶是否已登錄。
  • excludePathPatterns:從攔截中排除指定的路徑,這些路徑從SecurityProperties中獲取。

5. 驗證攔截效果

啟動Spring Boot應(yīng)用程序,驗證配置是否生效。以下是一些測試步驟:

  • 訪問排除路徑

    • 嘗試訪問配置文件中排除的路徑,如/public/**、/login/register。
    • 這些路徑應(yīng)不會觸發(fā)登錄檢查,可以直接訪問。
  • 訪問其他路徑

    • 嘗試訪問其他未排除的路徑,如/admin、/user/profile等。
    • 這些路徑應(yīng)觸發(fā)Sa-Token的登錄驗證邏輯,如果用戶未登錄,將會被攔截,并返回相應(yīng)的未登錄提示。

代碼解析

  • SecurityProperties:通過@ConfigurationProperties注解,Spring Boot會自動將前綴為security的配置屬性綁定到該類的excludes字段上,從而實現(xiàn)排除路徑的配置。
  • 配置文件:在配置文件中定義需要排除的路徑,以便動態(tài)加載到SecurityProperties中。
  • WebConfig:實現(xiàn)WebMvcConfigurer接口,通過addInterceptors方法添加Sa-Token的攔截器,并使用excludePathPatterns方法將配置文件中定義的排除路徑應(yīng)用到攔截器中。

詳細(xì)解釋

依賴配置

Sa-Token是一個輕量級的權(quán)限認(rèn)證框架,可以幫助我們輕松實現(xiàn)用戶登錄狀態(tài)的管理和權(quán)限認(rèn)證。通過引入sa-token-spring-boot-starter依賴,我們可以很方便地將其集成到Spring Boot項目中。

配置類 SecurityProperties

SecurityProperties類的作用是將配置文件中定義的排除路徑讀取并存儲到excludes數(shù)組中。通過使用@ConfigurationProperties注解,我們可以將前綴為security的屬性綁定到該類的excludes字段上。這樣做的好處是,排除路徑可以通過配置文件進(jìn)行動態(tài)配置,方便管理和維護(hù)。

配置文件

在配置文件中,我們定義了需要排除的路徑。這些路徑將不會被攔截器攔截,可以直接訪問。配置文件支持YAML格式和Properties格式,根據(jù)項目需要選擇合適的格式進(jìn)行配置。

攔截器配置

WebConfig類中,我們實現(xiàn)了WebMvcConfigurer接口,并重寫了addInterceptors方法。在該方法中,我們創(chuàng)建了一個Sa-Token的攔截器,并通過SaRouter.match("/**")匹配所有路徑。對于匹配到的路徑,我們使用StpUtil.checkLogin()方法進(jìn)行登錄狀態(tài)檢查。如果用戶未登錄,將會被攔截,并返回相應(yīng)的未登錄提示。

通過excludePathPatterns方法,我們將從SecurityProperties中獲取的排除路徑應(yīng)用到攔截器中。這樣一來,配置文件中定義的排除路徑將不會被攔截器攔截,可以直接訪問。

總結(jié)

通過本文的介紹,我們了解了如何在Spring Boot中使用Sa-Token實現(xiàn)路徑攔截和特定接口放行。我們首先引入了Sa-Token的依賴,然后定義了一個配置類SecurityProperties,用于讀取和存儲排除路徑信息。接著,在配置文件中定義了需要排除的路徑,并在WebConfig類中配置了Sa-Token的攔截器,將排除路徑應(yīng)用到攔截器中。最后,通過測試和驗證,確保配置生效,實現(xiàn)了對特定路徑的放行和其他路徑的權(quán)限驗證。

這種方式可以幫助開發(fā)者更靈活地管理Web應(yīng)用中的訪問控制,提升系統(tǒng)的安全性和可維護(hù)性。如果你有更多的自定義需求,可以根據(jù)Sa-Token的文檔進(jìn)行進(jìn)一步配置和擴(kuò)展。

以上就是SpringBoot使用Sa-Token實現(xiàn)路徑攔截和特定接口放行的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Sa-Token攔截和放行的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot嵌入式Web容器原理與使用介紹

    SpringBoot嵌入式Web容器原理與使用介紹

    Web開發(fā)的核心內(nèi)容主要包括內(nèi)嵌的Servlet容器和SpringMVCSpringBoot使用起來非常簡潔,大部分配置都有SpringBoot自動裝配,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • idea左側(cè)的commit框設(shè)置顯示出來方式

    idea左側(cè)的commit框設(shè)置顯示出來方式

    在IDEA中顯示左側(cè)的commit框,首先通過File-Settings-Version Control-Commit進(jìn)行設(shè)置,然后勾選Use non-modal commit interface完成
    2025-01-01
  • 一文詳解Java中的監(jiān)聽器(Listener)

    一文詳解Java中的監(jiān)聽器(Listener)

    這篇文章主要介紹了Java中監(jiān)聽器(Listener)的相關(guān)資料,監(jiān)聽器模式是一種設(shè)計模式,用于處理異步事件和通知,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • JDBC下Idea添加mysql-jar包的詳細(xì)過程

    JDBC下Idea添加mysql-jar包的詳細(xì)過程

    這篇文章主要介紹了JDBC下Idea添加mysql-jar包的詳細(xì)過程,添加jar包首先到官網(wǎng)下載jar包,然后idea導(dǎo)入jar包,在就是檢查,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • 詳解JavaWeb中的 Listener

    詳解JavaWeb中的 Listener

    JavaWeb里面的listener是通過觀察者設(shè)計模式進(jìn)行實現(xiàn)的。下面通過本文給大家詳細(xì)介紹javaweb中的listener,感興趣的朋友一起看看吧
    2016-09-09
  • JDK26新特性之語法、并發(fā)、性能與安全全面升級教程

    JDK26新特性之語法、并發(fā)、性能與安全全面升級教程

    Java26是甲骨文公司推出的Java編程語言第26個版本(Oracle JDK 26),于2026年3月17日發(fā)布,該版本包含數(shù)千項改進(jìn),旨在提升開發(fā)效率、簡化語法,并增強AI集成與加密能力,這篇文章主要介紹了JDK26新特性之語法、并發(fā)、性能與安全全面升級的相關(guān)資料,需要的朋友可以參考下
    2026-05-05
  • apache commons工具集代碼詳解

    apache commons工具集代碼詳解

    這篇文章主要介紹了apache commons工具集代碼詳解,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • 細(xì)數(shù)java for循環(huán)中的那些坑

    細(xì)數(shù)java for循環(huán)中的那些坑

    這篇文章主要介紹了Java for循環(huán)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Java接口名稱沖突問題的講解

    Java接口名稱沖突問題的講解

    今天小編就為大家分享一篇關(guān)于Java接口名稱沖突問題的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • springboot如何引入外部yml配置文件

    springboot如何引入外部yml配置文件

    這篇文章主要介紹了springboot如何引入外部yml配置文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

湖北省| 双江| 武乡县| 湛江市| 台东县| 舒城县| 偏关县| 晋州市| 基隆市| 北宁市| 建宁县| 胶南市| 宜阳县| 哈尔滨市| 大名县| 景谷| 临沧市| 阿拉尔市| 米易县| 章丘市| 巴林左旗| 库尔勒市| 泸定县| 林口县| 元阳县| 万宁市| 乌拉特后旗| 托克逊县| 阳东县| 彭泽县| 伽师县| 恩施市| 乌鲁木齐县| 迁西县| 沂水县| 高雄县| 洪泽县| 招远市| 云南省| 襄垣县| 萝北县|