溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

springboot攔截器執(zhí)行兩次的示例分析

發(fā)布時間:2021-09-15 17:11:16 來源:億速云 閱讀:170 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下springboot攔截器執(zhí)行兩次的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

springboot攔截器執(zhí)行兩次

原因是:

org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error

也是一個controller路徑為/error

@Configuration
public class MVCConfig extends WebMvcConfigurationSupport {
     //自定義的攔截器
    @Bean
    public SecurityInterceptor getSecurityInterceptor() {
        return new SecurityInterceptor();
    }
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加攔截器
        InterceptorRegistration registration = registry.addInterceptor(getSecurityInterceptor());
        //排除的路徑
        registration.excludePathPatterns("/login");
        registration.excludePathPatterns("/logout");
        //將這個controller放行
        registration.excludePathPatterns("/error");
        //攔截全部
        registration.addPathPatterns("/**");
    }
}

Springboot攔截器原理

根據(jù)當(dāng)前請求,找到**HandlerExecutionChain**** 【可以處理請求的handler以及handler的所有 攔截器】

先來順序執(zhí)行 所有攔截器的 preHandle方法

如果當(dāng)前攔截器prehandler返回為true。則執(zhí)行下一個攔截器的preHandle

如果當(dāng)前攔截器返回為false。直接 倒序執(zhí)行所有已經(jīng)執(zhí)行了的攔截器的 afterCompletion;

如果任何一個攔截器返回false。直接跳出不執(zhí)行目標(biāo)方法

所有攔截器都返回True。執(zhí)行目標(biāo)方法

倒序執(zhí)行所有攔截器的postHandle方法。

前面的步驟有任何異常都會直接倒序觸發(fā) afterCompletion

頁面成功渲染完成以后,也會倒序觸發(fā) afterCompletion

springboot攔截器執(zhí)行兩次的示例分析 springboot攔截器執(zhí)行兩次的示例分析

看完了這篇文章,相信你對“springboot攔截器執(zhí)行兩次的示例分析”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI