微服務-網關Gateway

個人對于網關路由的理解:

? ? ? ? 網關就相當于是一個項目里面的保安,主要作用就是做一個限制項。(zuul和gateway兩個不同的網關)

在路由中進行配置過濾器

過濾器工廠:對請求或響應進行加工

其中filters:過濾器配置的時當前配置下生效的,如果我們需要讓他的生效范圍編程全局的只需要把filters變成default-filters:即可

全局過濾器:(自己定義邏輯內容)Global-filters

主要邏輯:首先獲得請求參數,然后讀取請求參數中的authorization參數,判斷參數值是否等于admin,如果是,放行,不是就攔截。其中authorization參數是請求中有的參數,可以換成其他不一樣的參數進行正確性判斷,從而達到設置的效果

具體實現:order值越小,優先級越高,執行順序越靠前

package cn.itcast.gateway.filters;import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;import java.lang.annotation.Annotation;/*** @author 32338* @date 2024-06-29 16:40:01* @description 定義權限過濾器,用來過濾authorization=admin的放行*/
//@Order(-1) 使用這個參數或者繼承Order接口
@Component
public class AuthorizeFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {//1,先取到請求參數ServerHttpRequest request = exchange.getRequest();MultiValueMap<String, String> params = request.getQueryParams();//2,從請求參數里面得到authorizationString auth = params.getFirst("authorization");//3,判斷authorization是否等于adminif ("admin".equals(auth)){//4,是則放行return chain.filter(exchange);}//5,否,則攔截//設置狀態碼exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); //UNAUTHORIZED未授權//返回return exchange.getResponse().setComplete();}@Overridepublic int getOrder() {return -1;//實現Order來提高過濾器的過濾級別}
}

?過濾器鏈執行排序

? ? ? ? 默認過濾器>路由過濾器>全局過濾器

對于全局路由器的理解:

在全局路由器中我們實現了GlobalFilter接口,但在GlobalFilter接口中所有的GlobalFilter都可以被適配成GatewayFilter。

關于適配器中的Ordered排序問題:在配置文件中的過濾器是屬于Spring自動配置前后順序,默認從1開始。不過在我們設置了過濾器的順序之后可能會出現過濾器排序Order值相等的情況,那么我們就會先從default-filter開始然后再執行路由過濾器最后執行全局過濾器。

網關的跨域問題:

????????域名不一樣就叫做跨域(包括小小的不同)

跨域問題:瀏覽器禁止發起者與服務端發生跨域ajax請求,請求被攔截問題

解決方式:CORS

我們只需要在配置文件中加入以下配置,可酌情修改一些不需要的

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

add-to-simple-url-handler-mapping: true # 解決options請求被攔截問題:(網關特有)

通俗的話來說就是我們ajax用的是CORS跨域方案,這個方案就是瀏覽器問服務器,你讓不讓那哥們跨域,請求方式是option默認會被網關攔截,設置true就不會被攔截。

減少CORS跨域解決方案對性能的消耗,我們需要設置跨域檢測的有效期

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38016.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38016.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38016.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索QCS6490目標檢測AI應用開發(三):模型推理

作為《探索QCS6490目標檢測AI應用開發》文章&#xff0c;緊接上一期&#xff0c;我們介紹如何在應用程序中介紹如何使用解碼后的視頻幀結合Yolov8n模型推理。 高通 Qualcomm AI Engine Direct 是一套能夠針對高通AI應用加速的軟件SDK&#xff0c;更多的內容可以訪問&#xff1a…

摸魚大數據——Spark基礎——Spark環境安裝——PySpark搭建

三、PySpark環境安裝 PySpark: 是Python的庫, 由Spark官方提供. 專供Python語言使用. 類似Pandas一樣,是一個庫 Spark: 是一個獨立的框架, 包含PySpark的全部功能, 除此之外, Spark框架還包含了對R語言\ Java語言\ Scala語言的支持. 功能更全. 可以認為是通用Spark。 功能 P…

Golang | Leetcode Golang題解之第199題二叉樹的右視圖

題目&#xff1a; 題解&#xff1a; /** 102. 二叉樹的遞歸遍歷*/ func levelOrder(root *TreeNode) [][]int {arr : [][]int{}depth : 0var order func(root *TreeNode, depth int)order func(root *TreeNode, depth int) {if root nil {return}if len(arr) depth {arr a…

線性代數--行列式1

本篇來自對線性代數第一篇的行列式的一個總結。 主要是行列式中有些關鍵點和注意事項&#xff0c;便于之后的考研復習使用。 首先&#xff0c;對于普通的二階和三階行列式&#xff0c;我們可以直接對其進行拆開&#xff0c;展開。 而對于n階行列式 其行列式的值等于它的任意…

每個架構師都應該讀的八本經典書籍

格雷戈爾霍普在本文討論了8本被視為軟件架構師必讀的經典書籍。 以下是所提及的關鍵書籍的摘要&#xff1a; 1、維特魯威&#xff08;公元前 20 年&#xff09;的《建筑學》&#xff1a; 雖然與軟件架構沒有直接關系&#xff0c;但這部古代文獻被提及&#xff0c;具有歷史背景…

C++特殊類設計單例模式...

文章目錄 請設計一個類&#xff0c;不能被拷貝請設計一個類&#xff0c;只能在堆上創建對象請設計一個類&#xff0c;只能在棧上創建對象請設計一個類&#xff0c;不能被繼承請設計一個類&#xff0c;只能創建一個對象(單例模式)單例模式&#xff1a;餓漢模式&#xff1a;懶漢模…

代發考生戰報:6月25號 南寧 HCIP-Transmission傳輸 H31-341考試884分通過

代發考生戰報&#xff1a;6月25號 南寧 HCIP-Transmission傳輸 H31-341考試884分通過 &#xff0c;今天我和同事兩個人去考的&#xff0c;我考試遇到1個新題&#xff0c;他遇到兩個新題&#xff0c;客服提供的題庫很穩定&#xff0c;全覆蓋了&#xff0c;輕松通過&#xff0c;考…

【語言模型】Xinference的部署過程

一、引言 Xinference&#xff0c;也稱為Xorbits Inference&#xff0c;是一個性能強大且功能全面的分布式推理框架&#xff0c;專為各種模型的推理而設計。無論是研究者、開發者還是數據科學家&#xff0c;都可以通過Xinference輕松部署自己的模型或內置的前沿開源模型。Xinfe…

pikachu靶場 利用Rce上傳一句話木馬案例(工具:中國蟻劍)

目錄 一、準備靶場&#xff0c;進入RCE 二、測試寫入文件 三、使用中國蟻劍 一、準備靶場&#xff0c;進入RCE 我這里用的是pikachu 打開pikachu靶場&#xff0c;選擇 RCE > exec "ping" 測試是否存在 Rce 漏洞 因為我們猜測在這個 ping 功能是直接調用系統…

性能評測系列:云架構擴展演進橫向對比

原始測評報告 性能評測系列&#xff08;PT-010&#xff09;&#xff1a;Spring Boot RDS for MySQL&#xff0c;高并發insert 性能評測系列&#xff08;PT-012&#xff09;&#xff1a;Spring Boot(K8s多實例) RDS for MySQL&#xff0c;高并發insert 性能評測系列&#xff…

一元線性回歸-R語言

# # 安裝包 # install.packages(ggplot2) # library(ggplot2) Sys.setlocale(category LC_ALL, locale English_United States.1252) # Sys.setlocale("LC_ALL","Chinese") x <- c(18, 20, 22, 24, 26, 28, 30) y <- c(26.86, 28.35, 28.87,28.75,…

Linux——vim的配置文件+異常處理

vim的配置文件&#xff1a; [rootserver ~]# vim /etc/vimrc # 輸入以下內容 set nu # 永久設置行號 shell [rootserver ~]# vim /etc/vimrc 或者 vim ~/.vimrc set hlsearch "高亮度反白 set backspace2 "可隨時用退格鍵刪除 set autoindent…

期貨的杠桿怎么計算?

什么是杠桿系數 杠桿系數是指期貨合約價值與保證金之間的比例。它表示投資者只需投入少量資金&#xff0c;就可以控制價值更高的期貨合約。杠桿系數越高&#xff0c;投資者的資金放大倍數就越大&#xff0c;但風險也越大。 什么是期貨保證金呢&#xff1f; 期貨保證金&…

《HelloGitHub》第 99 期

興趣是最好的老師&#xff0c;HelloGitHub 讓你對編程感興趣&#xff01; 簡介 HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。 github.com/521xueweihan/HelloGitHub 這里有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等&#xff0c;涵蓋多種編程語言 Python、…

Multicolor Dragon-MCD 六彩神龍_RSI

MCDX 六彩神龍 https://www.tradingview.com/script/u2dIgVpN-M2J-Indicator-MCDX/ MCDX is an indicator based on mutilple Relative Strength Index (RSI) with different period, then classify into 3 categories - Retailer, Hot Money and Banker - Green - Retailer零…

2024.06.28 刷題日記

394. 字符串解碼 給定一個經過編碼的字符串&#xff0c;返回它解碼后的字符串。 示例 1&#xff1a; 輸入&#xff1a;s “3[a]2[bc]” 輸出&#xff1a;“aaabcbc” 示例 2&#xff1a; 輸入&#xff1a;s “3[a2[c]]” 輸出&#xff1a;“accaccacc” 示例 3&#xff1a;…

怎么進行模型微調,以微調llama3為例

微調模型&#xff08;Fine-tuning&#xff09;通常涉及以下步驟&#xff0c;以微調 LLaMA 3 為例&#xff1a; 1. 準備工作 在開始微調之前&#xff0c;需要準備以下工作&#xff1a; 選擇預訓練模型&#xff1a;LLaMA 3 是一個大型的語言模型&#xff0c;可以通過 Hugging F…

react 中 Swiper vertical 模式下 autoHeight 失效的問題

Swiper 在 vertical 模式下 autoHeight 失效的問題&#xff0c;導致頁面出現多余的空白高度&#xff0c;網上找了很多方法都無效&#xff0c;我直接暴力更改。 <SwiperclassNameindex-swiperdirection{vertical}mousewheel{true}centeredSlides{true}autoHeight{true}slide…

VS2019+QT5.12.10: error MSB4036: 未找到“Join”任務。請檢查下列各項: 1.) 項目文件中的任務名

1、背景 兩個VS2019打開兩個相同的項目&#xff0c;一個里可以正常運行&#xff0c; 一個中一直報錯&#xff0c;&#xff0c;報的錯也是瞎幾把報的。。 2、重新安裝插件 之前在VS的擴展中在線安裝了qt插件&#xff0c; 安裝了一半&#xff0c;比較慢&#xff0c;直接強行退出…

傳媒行業指哪些?需要過等保嗎?

傳媒&#xff0c;一個人人都接觸的行業。相信大家都聽過傳媒&#xff0c;但具體傳媒行業是指什么&#xff0c;包括哪些&#xff0c;詳細很多人都不了解。這不一些人在問&#xff0c;傳媒行業指哪些&#xff1f;需要過等保嗎&#xff1f;這里跟我們小編一起來討論討論吧&#xf…