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

SpringBoot攔截器excludePathPatterns方法不生效的解決方案

 更新時(shí)間:2023年07月11日 10:24:25   作者:程序員大佬超  
這篇文章主要介紹了SpringBoot攔截器excludePathPatterns方法不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot攔截器excludePathPatterns方法不生效

在攔截器用 excludePathPatterns() 方法排除訪問(wèn)路徑時(shí),發(fā)現(xiàn)不生效,配置代碼如下

/**
 * @author 程序員大佬超
 * @date 2023-03-01 15:33.
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Autowired
    AuthTokenInterceptor authTokenInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        List<String> patterns = new ArrayList<>();
        patterns.add("/**/login/login");
        registry.addInterceptor(authTokenInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns(patterns);
    }
}

接口訪問(wèn)地址:http://127.0.0.1:8088/api-im/login/login

其實(shí)這個(gè)問(wèn)題大部分情況下無(wú)非兩個(gè)原因:

1、要排除的這個(gè)訪問(wèn)路徑配置馬虎寫錯(cuò)了。

2、要排除的這個(gè)訪問(wèn)路徑就不存在,或者請(qǐng)求參數(shù)不對(duì)解析出錯(cuò),這時(shí)SpringBoot會(huì)將路徑自動(dòng)變成/error,具體可以在自定義攔截器里打斷點(diǎn)驗(yàn)證一下。

我這里就是第二個(gè)原因,可以看到自定義的攔截器里 requestURI 變成了 /error。

在這里插入圖片描述

解決方法

保證接口正確或者檢查請(qǐng)求參數(shù),反正要保證能正常進(jìn)入,我這就是請(qǐng)求頭里少了一個(gè)參數(shù),然后解析的時(shí)候日志里其實(shí)已經(jīng)提示缺失請(qǐng)求頭了。

WARN 15628 --- [nio-8088-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : 
Resolved [org.springframework.web.bind.MissingRequestHeaderException: Required request header 'test' for method parameter type String is not present]

然后,加上即可

在這里插入圖片描述

springboot攔截器實(shí)現(xiàn)

1.創(chuàng)建一個(gè)類,實(shí)現(xiàn)WebMvxConfigurer,重寫addInterceptors,添加需要攔截的路徑,以及放行的路徑

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
? ? @Override
? ? public void addInterceptors(InterceptorRegistry registry) {
? ? ? ? try {
//MyLoginInterception這個(gè)類是攔截的條件(如是否需要登錄,需要單獨(dú)來(lái)寫,請(qǐng)看下面)
//excludePathPatterns這個(gè)是不需要進(jìn)行攔截的操作路徑。
registry.addInterceptor(MyLoginInterception.class.newInstance()).addPathPatterns("/**")
? ? ? ? ? ? ? ? ? ? .excludePathPatterns("/login", "/register", "/**/*.js", "/**/*.css", "/**/*.html");
? ? ? ? } catch (InstantiationException e) {
? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? } catch (IllegalAccessException e) {
? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? }
? ? }
}

2.創(chuàng)建類,對(duì)攔截路徑的請(qǐng)求做條件判斷

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Configuration
public class MyLoginInterception implements HandlerInterceptor {
? ? @Override
? ? public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
? ? ? ? System.out.println("------------start------------");
//這里方便測(cè)試,對(duì)請(qǐng)求頭帶有”source“:”back“ 進(jìn)行放行
? ? ? ? if (null == request.getHeader("source") || !request.getHeader("source").equals("back")) {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? return true;
? ? }
? ? @Override
? ? public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
? ? ? ? System.out.println("攔截器執(zhí)行結(jié)束");
? ? ? ? HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
? ? }
? ? @Override
? ? public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
? ? ? ? System.out.println("數(shù)據(jù)返回,執(zhí)行結(jié)束");
? ? ? ? HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
? ? }
}

攔截器的實(shí)現(xiàn)比較簡(jiǎn)單,比較難的是根據(jù)業(yè)務(wù),做相關(guān)處理,如對(duì)cook,session的處理,以及各種條件的處理

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 10種java數(shù)組合并的常用方法總結(jié)

    10種java數(shù)組合并的常用方法總結(jié)

    在Java中,合并(或連接)數(shù)組是常見(jiàn)的任務(wù),這篇文章主要為大家整理了10個(gè)java中常用的數(shù)組合并方法,文中的示例代碼簡(jiǎn)潔易懂,需要的小伙伴可以參考下
    2023-12-12
  • java.text.DecimalFormat類十進(jìn)制格式化

    java.text.DecimalFormat類十進(jìn)制格式化

    這篇文章主要為大家詳細(xì)介紹了java.text.DecimalFormat類十進(jìn)制格式化的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • springboot實(shí)現(xiàn)rabbitmq消息確認(rèn)的示例代碼

    springboot實(shí)現(xiàn)rabbitmq消息確認(rèn)的示例代碼

    RabbitMQ的消息確認(rèn)有兩種, 一種是消息發(fā)送確認(rèn),第二種是消費(fèi)接收確認(rèn),本文主要介紹了springboot實(shí)現(xiàn)rabbitmq消息確認(rèn)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • springboot異步處理@NotBlank或@NotNull注釋校驗(yàn)不生效問(wèn)題

    springboot異步處理@NotBlank或@NotNull注釋校驗(yàn)不生效問(wèn)題

    這篇文章主要介紹了springboot異步處理@NotBlank或@NotNull注釋校驗(yàn)不生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • commons io文件操作示例分享

    commons io文件操作示例分享

    這篇文章主要介紹了commons io文件操作示例分享,需要的朋友可以參考下
    2014-02-02
  • Java中文件的讀寫方法之IO流詳解

    Java中文件的讀寫方法之IO流詳解

    這篇文章主要介紹了Java中文件的讀寫方法之IO流詳解,本文中的代碼所涉及到的路徑或者文件都是本人的,大家得換成自己的,并且大家可以在網(wǎng)上自行找一些材料作為讀入或者寫入的材料,不過(guò)路徑最好是英文的,不要包含中文,防止JVM讀取失敗
    2022-04-04
  • 基于java編寫局域網(wǎng)多人聊天室

    基于java編寫局域網(wǎng)多人聊天室

    這篇文章主要為大家詳細(xì)介紹了基于java編寫局域網(wǎng)多人聊天室的相關(guān)資料,使用socket基于java編寫一個(gè)局域網(wǎng)聊天室,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 解決Spring Batch框架job任務(wù)只跑一次的問(wèn)題

    解決Spring Batch框架job任務(wù)只跑一次的問(wèn)題

    這篇文章主要介紹了解決Spring Batch框架job任務(wù)只跑一次的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java連接并操作Redis超詳細(xì)教程

    Java連接并操作Redis超詳細(xì)教程

    在分布式系統(tǒng)和高并發(fā)場(chǎng)景中,Redis?作為高性能內(nèi)存數(shù)據(jù)庫(kù)的地位舉足輕重,對(duì)于?Java?開發(fā)者而言,掌握?Redis?的連接與操作是進(jìn)階必備技能,本文從?Java?操作?Redis?的核心需求出發(fā),通過(guò)完整代碼示例與逐行解析,需要的朋友可以參考下
    2025-05-05
  • SpringBoot前后端傳輸加密設(shè)計(jì)實(shí)現(xiàn)方案

    SpringBoot前后端傳輸加密設(shè)計(jì)實(shí)現(xiàn)方案

    這篇文章主要給大家介紹了關(guān)于SpringBoot前后端傳輸加密設(shè)計(jì)實(shí)現(xiàn)方案的相關(guān)資料,包括數(shù)據(jù)加密方案、解密傳輸數(shù)據(jù)實(shí)現(xiàn)方案和響應(yīng)數(shù)據(jù)加密實(shí)現(xiàn)方案,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11

最新評(píng)論

馆陶县| 唐河县| 辽阳县| 巴林左旗| 灵台县| 瓦房店市| 黎城县| 浮梁县| 托克逊县| 石棉县| 仁化县| 伊金霍洛旗| 黑山县| 界首市| 东台市| 永仁县| 临邑县| 龙南县| 南陵县| 义马市| 金沙县| 鄢陵县| 张北县| 襄樊市| 江华| 吴川市| 天等县| 独山县| 股票| 惠安县| 成都市| 蓝田县| 高雄市| 博野县| 分宜县| 咸丰县| 长宁县| 德保县| 天峨县| 普兰县| 文安县|