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

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

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

1. 引入依賴(lài)

首先,在pom.xml文件中引入Sa-Token相關(guān)的依賴(lài)。Sa-Token是一個(gè)輕量級(jí)的Java權(quán)限認(rèn)證框架,可以幫助我們輕松實(shí)現(xiàn)用戶(hù)登錄狀態(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)建配置類(lèi) SecurityProperties

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

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的注解,自動(dòng)生成getter和setter方法。
  • @Component:將該類(lèi)注冊(cè)為Spring的組件。
  • @ConfigurationProperties:指定前綴security,從配置文件中讀取以該前綴開(kāi)頭的屬性,并將這些屬性映射到該類(lèi)的字段上。

3. 編寫(xiě)配置文件

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

application.yml:

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

application.properties:

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

4. 配置攔截器

創(chuàng)建一個(gè)配置類(lèi)WebConfig,實(shí)現(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)識(shí)這是一個(gè)配置類(lèi)。
  • addInterceptors:重寫(xiě)該方法,向Spring的攔截器注冊(cè)中心添加自定義的攔截器。
  • SaInterceptor:Sa-Token提供的攔截器,主要用于權(quán)限驗(yàn)證。
  • SaRouter.match("/**"):匹配所有路徑。
  • StpUtil.checkLogin():Sa-Token提供的登錄狀態(tài)檢查方法,用于驗(yàn)證用戶(hù)是否已登錄。
  • excludePathPatterns:從攔截中排除指定的路徑,這些路徑從SecurityProperties中獲取。

5. 驗(yàn)證攔截效果

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

  • 訪問(wèn)排除路徑

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

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

代碼解析

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

詳細(xì)解釋

依賴(lài)配置

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

配置類(lèi) SecurityProperties

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

配置文件

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

攔截器配置

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

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

總結(jié)

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

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

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

相關(guān)文章

  • Spring?Bean獲取方式的實(shí)例化方式詳解

    Spring?Bean獲取方式的實(shí)例化方式詳解

    工作中需要對(duì)一個(gè)原本加載屬性文件的工具類(lèi)修改成對(duì)數(shù)據(jù)庫(kù)的操作當(dāng)然,ado層已經(jīng)寫(xiě)好,但是需要從Spring中獲取bean,然而,工具類(lèi)并沒(méi)有交給Spring來(lái)管理,所以需要通過(guò)方法獲取所需要的bean。于是整理了Spring獲取bean的幾種方法
    2023-03-03
  • 遞歸出現(xiàn)棧溢出stackoverflow的問(wèn)題及解決

    遞歸出現(xiàn)棧溢出stackoverflow的問(wèn)題及解決

    這篇文章主要介紹了關(guān)于遞歸出現(xiàn)棧溢出stackoverflow的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • mybatisplus如何在xml的連表查詢(xún)中使用queryWrapper

    mybatisplus如何在xml的連表查詢(xún)中使用queryWrapper

    這篇文章主要介紹了mybatisplus如何在xml的連表查詢(xún)中使用queryWrapper,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • spring boot mybatis枚舉映射示例代碼

    spring boot mybatis枚舉映射示例代碼

    這篇文章主要給大家介紹了關(guān)于spring boot mybatis枚舉映射的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • MyEclipse10安裝Log4E插件

    MyEclipse10安裝Log4E插件

    這篇文章主要介紹了MyEclipse10安裝Log4E插件的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • java和javascript中過(guò)濾掉img形式的字符串不顯示圖片的方法

    java和javascript中過(guò)濾掉img形式的字符串不顯示圖片的方法

    這篇文章主要介紹了java和javascript中過(guò)濾掉img形式的字符串不顯示圖片的方法,以實(shí)例形式分別講述了采用java和javascript實(shí)現(xiàn)過(guò)濾掉img形式字符串的技巧,需要的朋友可以參考下
    2015-02-02
  • IDEA maven項(xiàng)目中刷新依賴(lài)的兩種方法小結(jié)

    IDEA maven項(xiàng)目中刷新依賴(lài)的兩種方法小結(jié)

    這篇文章主要介紹了IDEA maven項(xiàng)目中刷新依賴(lài)的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • MyBatis批量插入的五種方式

    MyBatis批量插入的五種方式

    這篇文章主要介紹了MyBatis批量插入的五種方式,每種方式結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • Jenkins忘記密碼密碼重置操作步驟詳解

    Jenkins忘記密碼密碼重置操作步驟詳解

    這篇文章主要為大家介紹了Jenkins忘記密碼密碼重置操作步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Springboot項(xiàng)目快速實(shí)現(xiàn)Aop功能

    Springboot項(xiàng)目快速實(shí)現(xiàn)Aop功能

    這篇文章主要介紹了Springboot項(xiàng)目如何快速實(shí)現(xiàn)Aop功能,對(duì)此方面感興趣的小伙伴可以詳細(xì)參考閱讀本文,本文有一定的參考價(jià)值
    2023-03-03

最新評(píng)論