国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

網(wǎng)關(guān)Gateway過濾器的使用

這篇具有很好參考價值的文章主要介紹了網(wǎng)關(guān)Gateway過濾器的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:
最近在學習微服務(wù)相關(guān)的知識,看了黑馬的相關(guān)課程,將關(guān)于Gateway過濾器的知識又總結(jié)了一些,希望能幫到各位小伙兒們以及加深下自己的印象??
如果文章有什么需要改進的地方還請大佬多多指教??
小威先感謝大家的支持了??
網(wǎng)關(guān)Gateway過濾器的使用

全局過濾器

Gateway網(wǎng)關(guān)的過濾器分為兩種,一種是局部過濾器,一種是全局過濾器。
過濾器,顧名思義,就是過濾一些請求,在這里,全局過濾器的作用是處理一切進入網(wǎng)關(guān)的請求和微服務(wù)響應(yīng),與GatewayFilter的作用一樣。區(qū)別在于GatewayFilter通過配置定義,處理邏輯是固定的;而GlobalFilter的邏輯需要自己寫代碼實現(xiàn)。
網(wǎng)關(guān)Gateway過濾器的使用

Gateway內(nèi)部有一個接口 名為GlobalFilter,這個就是Gateway的全局過濾器接口,只要在應(yīng)用中實現(xiàn)此接口后注冊為Spring的Bean,它就會就會幫我們將這個實現(xiàn)注冊到全局過濾器鏈條里邊去。
定義方式是實現(xiàn)GlobalFilter接口。
網(wǎng)關(guān)Gateway過濾器的使用

public interface GlobalFilter {
    /**
     *  處理當前請求,有必要的話通過{@link GatewayFilterChain}將請求交給下一個過濾器處理
     *
     * @param exchange 請求上下文,里面可以獲取Request、Response等信息
     * @param chain 用來把請求委托給下一個過濾器 
     * @return {@code Mono<Void>} 返回標示當前過濾器業(yè)務(wù)結(jié)束
     */
    Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain);
}

在filter中需要編寫自定義邏輯,可以實現(xiàn)下列功能:登錄狀態(tài)判斷,權(quán)限校驗,請求限流等。

自定義全局過濾器

如果需要判斷參數(shù)中是否有authorization,authorization參數(shù)值是否為admin應(yīng)如何做呢,以下為Gateway的實現(xiàn)過濾器代碼:

import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

@Order(-1)
@Component
public class AuthorizeFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 1.獲取請求參數(shù)
        MultiValueMap<String, String> params = exchange.getRequest().getQueryParams();
        // 2.獲取authorization參數(shù)
        String auth = params.getFirst("authorization");
        // 3.校驗
        if ("admin".equals(auth)) {
            // 放行
            return chain.filter(exchange);
        }
        // 4.攔截
        // 4.1.禁止訪問,設(shè)置狀態(tài)碼
        exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);
        // 4.2.結(jié)束處理
        return exchange.getResponse().setComplete();
    }
}

過濾器執(zhí)行順序

過濾器會被執(zhí)行兩次,過濾分為pre和post。

pre:請求前調(diào)用。
post:響應(yīng)結(jié)果返回時調(diào)用,順序和pre完全相反。

請求進入網(wǎng)關(guān)會碰到三類過濾器:當前路由的過濾器、DefaultFilter、GlobalFilter

請求路由后,會將當前路由過濾器和DefaultFilter、GlobalFilter,合并到一個過濾器鏈(集合)中,排序后依次執(zhí)行每個過濾器:
網(wǎng)關(guān)Gateway過濾器的使用

排序規(guī)則如下:

每一個過濾器都必須指定一個int類型的order值,order值越小,優(yōu)先級越高,執(zhí)行順序越靠前。
GlobalFilter通過實現(xiàn)Ordered接口,或者添加@Order注解來指定order值,由我們自己指定
路由過濾器和defaultFilter的order由Spring指定,默認是按照聲明順序從1遞增。
當過濾器的order值一樣時,會按照 defaultFilter > 路由過濾器 > GlobalFilter的順序執(zhí)行。

org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#getFilters()方法是先加載defaultFilters,然后再加載某個route的filters,然后合并。

org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法會加載全局過濾器,與前面的過濾器合并后根據(jù)order排序,組織過濾器鏈。

跨域問題

跨域問題就是瀏覽器禁止請求的發(fā)起者與服務(wù)端發(fā)生跨域ajax請求,請求被瀏覽器攔截的問題。
跨域配置

spring:
  cloud:
    gateway:
      # 。。。
      globalcors: # 全局的跨域處理
        add-to-simple-url-handler-mapping: true # 解決options請求被攔截問題
        corsConfigurations:
          '[/**]':
            allowedOrigins: # 允許哪些網(wǎng)站的跨域請求 
              - "http://localhost:8090"
            allowedMethods: # 允許的跨域ajax的請求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允許在請求中攜帶的頭信息
            allowCredentials: true # 是否允許攜帶cookie
            maxAge: 360000 # 這次跨域檢測的有效期

網(wǎng)關(guān)Gateway過濾器的使用

文章到這里就結(jié)束了,如果有什么疑問的地方請指出,諸佬們一起討論??
再次感謝各位小伙伴兒們的支持??
網(wǎng)關(guān)Gateway過濾器的使用文章來源地址http://www.zghlxwxcb.cn/news/detail-407080.html

到了這里,關(guān)于網(wǎng)關(guān)Gateway過濾器的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JAVA開發(fā)(通過網(wǎng)關(guān)gateway過濾器進行返回結(jié)果加密)

    JAVA開發(fā)(通過網(wǎng)關(guān)gateway過濾器進行返回結(jié)果加密)

    在對C的網(wǎng)站或者APP后端接口中,參數(shù)的傳輸往往需要加密傳輸。這時我們 可以通過springcloud的網(wǎng)關(guān)過濾器進行統(tǒng)一的控制。 網(wǎng)關(guān)過濾器的執(zhí)行順序: 請求進入網(wǎng)關(guān)會碰到三類過濾器:當前路由過濾器、DefaultFilter、GlobalFilter。 請求路由后,會將當前路由過濾器和DefaultFilter、

    2023年04月17日
    瀏覽(21)
  • 【Spring Cloud】深入探索統(tǒng)一網(wǎng)關(guān) Gateway 的搭建,斷言工廠,過濾器工廠,全局過濾器以及跨域問題

    【Spring Cloud】深入探索統(tǒng)一網(wǎng)關(guān) Gateway 的搭建,斷言工廠,過濾器工廠,全局過濾器以及跨域問題

    在微服務(wù)架構(gòu)中,網(wǎng)關(guān)是至關(guān)重要的組件,具有多重職責,為整個系統(tǒng)提供了一系列關(guān)鍵功能。從下面的微服務(wù)結(jié)構(gòu)圖中,我們可以明確網(wǎng)關(guān)的幾項主要作用: 微服務(wù)結(jié)構(gòu)圖: 請求過濾與安全: 用戶的所有請求首先經(jīng)過網(wǎng)關(guān),這使得網(wǎng)關(guān)成為系統(tǒng)的第一道防線。通過對傳入

    2024年02月07日
    瀏覽(23)
  • GateWay網(wǎng)關(guān)自定義過濾器實現(xiàn)token校驗完成統(tǒng)一鑒權(quán)

    GateWay網(wǎng)關(guān)自定義過濾器實現(xiàn)token校驗完成統(tǒng)一鑒權(quán)

    gateWay---API網(wǎng)關(guān),也可以稱為業(yè)務(wù)網(wǎng)關(guān),主要服務(wù)于微服務(wù)的; (1)? 三大組件 路由(Route) ????????構(gòu)建網(wǎng)關(guān)的基本模塊,由id(唯一標示)、目標URI、一組斷言、一組過濾器組成,如果斷言為true,則匹配該路由 ? 斷言(Predicate) ? ? ? ? ?可以使用它匹配來自HTTP請求的任何

    2024年02月08日
    瀏覽(22)
  • SpringCloud GateWay 在全局過濾器中注入OpenFeign網(wǎng)關(guān)后無法啟動

    SpringCloud GateWay 在全局過濾器中注入OpenFeign網(wǎng)關(guān)后無法啟動

    目錄 一、問題 二、原因 1、修改配置 2、添加@Lazy注解在client上面 ?3、啟動成功 當在gateway的全局過濾器GlobalFilter中注入OpenFeign接口的時候會一直卡在路由中,但是不會進一步,導致啟動未成功也未報錯失敗 在gateway網(wǎng)關(guān)中不能使用openfeign同步調(diào)用 三、解決方法 在注入的Aut

    2024年01月19日
    瀏覽(20)
  • 微服務(wù)Gateway網(wǎng)關(guān)(自動定位/自定義過濾器/解決跨域)+nginx反向代理gateway集群

    微服務(wù)Gateway網(wǎng)關(guān)(自動定位/自定義過濾器/解決跨域)+nginx反向代理gateway集群

    目錄 Gateway網(wǎng)關(guān) 1.0.為什么需要網(wǎng)關(guān)? 1.1.如何使用gateway網(wǎng)關(guān) 1.2.網(wǎng)關(guān)從注冊中心拉取服務(wù) 1.3.gateway自動定位 1.4.gateway常見的斷言 1.5.gateway內(nèi)置的過濾器 1.6.自定義過濾器-全局過濾器 1.7.解決跨域問題 2.nginx反向代理gateway集群 2.1.配置文件 繼? nacos注冊中心+Ribbon負載均衡+完成

    2024年02月06日
    瀏覽(42)
  • SpringCloud - Spring Cloud 之 Gateway網(wǎng)關(guān),Route路由,Predicate 謂詞/斷言,F(xiàn)ilter 過濾器(十三)

    SpringCloud - Spring Cloud 之 Gateway網(wǎng)關(guān),Route路由,Predicate 謂詞/斷言,F(xiàn)ilter 過濾器(十三)

    閱讀本文前可先參考 ??????SpringCloud - Spring Cloud根/父項目,開發(fā)準備(二)_MinggeQingchun的博客-CSDN博客 SpringCloud - Spring Cloud 之 Gateway網(wǎng)關(guān)(十三)_MinggeQingchun的博客-CSDN博客 Web 有三大組件(監(jiān)聽器 過濾器 servlet),Spring Cloud GateWay 最主要的功能就是路由轉(zhuǎn)發(fā),而在定義

    2024年02月14日
    瀏覽(29)
  • GateWay具體的使用之局部過濾器接口耗時

    GateWay具體的使用之局部過濾器接口耗時

    局部過濾器命名規(guī)則 XXX GatewayFilterFactory , 必須以 GatewayFilterFactory 結(jié)尾。

    2024年04月28日
    瀏覽(26)
  • Gateway自定義過濾器——全局過濾器

    Gateway自定義過濾器——全局過濾器

    首先,我們要知道全局過濾器其實是特殊路由過濾器(特殊的GatewayFilter),會有條件地作用于所有路由。 為什么要自定義全局過濾器?就好比是看大門的保安大叔,平時主要是做好進出大門外來人員登記即可,但是因為新冠疫情,現(xiàn)在還需要給外來人員測量體溫等等。而已有的

    2024年02月16日
    瀏覽(23)
  • gateway-過濾器執(zhí)行順序

    請求進入網(wǎng)關(guān)會碰到三類過濾器:當前路由過濾器、DefaultFilter、GlobalFilter。 請求路由后,會將當前路由過濾器和DefaultFilter、GlobalFilter,合并到一個過濾器鏈(集合)中,排序后依次執(zhí)行每個過濾器 過濾器執(zhí)行順序 1.每一個過濾器都必須指定一個int類型的order值,order值越小

    2024年02月13日
    瀏覽(18)
  • gateway過濾器沒生效,特殊原因

    gateway過濾器沒生效,特殊原因

    看這邊文章的前提,你要會gateway,知道過濾器怎么配置? 直接來看過濾器,局部過濾器 再來看配置 請求路徑 http://127.0.0.1:8080/appframework/services/catalog/catalogSpecials.json?pageindex=1pagesize=10pkid=d9873700ef7e42b3b8f4e782f345975b 看起來確實沒什么問題 注意: 我這里還有個應(yīng)用,就是網(wǎng)關(guān)轉(zhuǎn)

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包