返回顶部
首页 > 资讯 > 精选 >网关Gateway过滤器如何使用
  • 380
分享到

网关Gateway过滤器如何使用

2023-07-02 16:07:33 380人浏览 薄情痞子
摘要

这篇“网关Gateway过滤器如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“网关Gateway过滤器如何使用”文章吧

这篇“网关Gateway过滤器如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“网关Gateway过滤器如何使用”文章吧。

全局过滤器

Gateway网关的过滤器分为两种,一种是局部过滤器,一种是全局过滤器。
过滤器,顾名思义,就是过滤一些请求,在这里,全局过滤器的作用是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。区别在于GatewayFilter通过配置定义,处理逻辑是固定的;而GlobalFilter的逻辑需要自己写代码实现。

网关Gateway过滤器如何使用

Gateway内部有一个接口 名为GlobalFilter,这个就是Gateway的全局过滤器接口,只要在应用中实现此接口后注册为spring的Bean,它就会就会帮我们将这个实现注册到全局过滤器链条里边去。
定义方式是实现GlobalFilter接口。

网关Gateway过滤器如何使用

public interface GlobalFilter {        Mono<Void> filter(ServerWEBExchange exchange, GatewayFilterChain chain);}

在filter中需要编写自定义逻辑,可以实现下列功能:登录状态判断,权限校验,请求限流等。

自定义全局过滤器

如果需要判断参数中是否有authorization,authorization参数值是否为admin应如何做呢,以下为Gateway的实现过滤器代码:

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)@Componentpublic class AuthorizeFilter implements GlobalFilter {    @Override    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {        // 1.获取请求参数        MultiValueMap<String, String> params = exchange.getRequest().getQueryParams();        // 2.获取authorization参数        String auth = params.getFirst("authorization");        // 3.校验        if ("admin".equals(auth)) {            // 放行            return chain.filter(exchange);        }        // 4.拦截        // 4.1.禁止访问,设置状态码        exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);        // 4.2.结束处理        return exchange.getResponse().setComplete();    }}

过滤器执行顺序

过滤器会被执行两次,过滤分为pre和post。

pre:请求前调用。
post:响应结果返回时调用,顺序和pre完全相反。

请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter、GlobalFilter

请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器:

网关Gateway过滤器如何使用

排序规则如下:

每一个过滤器都必须指定一个int类型的order值,order值越小,优先级越高,执行顺序越靠前
GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自己指定
路由过滤器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增。
当过滤器的order值一样时,会按照 defaultFilter > 路由过滤器 > GlobalFilter的顺序执行

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

org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法会加载全局过滤器,与前面的过滤器合并后根据order排序,组织过滤器链。

跨域问题

跨域问题就是浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题。
跨域配置

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 # 是否允许携带cookie            maxAge: 360000 # 这次跨域检测的有效期

以上就是关于“网关Gateway过滤器如何使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: 网关Gateway过滤器如何使用

本文链接: https://lsjlt.com/news/343205.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 网关Gateway过滤器如何使用
    这篇“网关Gateway过滤器如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“网关Gateway过滤器如何使用”文章吧...
    99+
    2023-07-02
  • 网关Gateway过滤器的使用详解
    目录前言:全局过滤器自定义全局过滤器跨域问题前言: 最近在学习微服务相关的知识,看了黑马的相关课程,将关于Gateway过滤器的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己...
    99+
    2024-04-02
  • Spring Cloud Gateway网关XSS过滤方式
    目录1.创建一个Filter2. 处理XSS字符串3.其它使用到的工具修改XSS是一种经常出现在web应用中的计算机安全漏洞,具体信息请自行Google。本文只分享在Spring C...
    99+
    2024-04-02
  • 网关GateWay的使用详解、路由、过滤器、跨域配置
    网关GateWay的使用详解、路由、过滤器、跨域配置 一、网关的基本概念 SpringCloudGateway网关是所有微服务的统一入口。 1.1 它的主要作用是: 反向代理(请求的转发)路由和负载均...
    99+
    2023-09-07
    gateway java spring cloud 分布式 服务器
  • springcloud如何整合gateway实现网关全局过滤器功能
    这篇文章主要讲解了“springcloud如何整合gateway实现网关全局过滤器功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springcloud如何整合gateway实现网关全局过...
    99+
    2023-06-29
  • springcloud整合gateway实现网关全局过滤器功能
    目录1.代码实现:2.实现效果:springcloud整合gateway实现网关全局过滤器功能,在​ ​ springcloud整合gateway实现网关 ​​基础功能上进...
    99+
    2024-04-02
  • 如何为Spring Cloud Gateway加上全局过滤器
    既然是一个网关。那么全局过滤器肯定是少不了的一个存在。像是鉴权、认证啥的不可能每个服务都做一次,一般都是在网关处就搞定了。 Zuul他就有很强大的过滤器体系来给人使用。 Gatewa...
    99+
    2024-04-02
  • jQuery如何使用过滤器过滤多属性
    这篇文章给大家分享的是有关jQuery如何使用过滤器过滤多属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用过滤器过滤多属性//This precision-based approache...
    99+
    2023-06-27
  • vue如何使用过滤器
    在vue中使用过滤器的方法:1.新建vue.js项目;2.使用import方法引入filter过滤器;3.全局注册过滤器;4.执行命令直接引用;具体步骤如下:首先,在vue-cli中创建一个vue.js项目;vue create proje...
    99+
    2024-04-02
  • springcloud中如何实现服务网关过滤器
    这篇文章将为大家详细讲解有关springcloud中如何实现服务网关过滤器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。过滤器作用我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。...
    99+
    2023-06-05
  • Vue.js中如何使用过滤器
    Vue.js中如何使用过滤器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。过滤器是一个通过输入数据,能够及时对数据进行处理并返...
    99+
    2024-04-02
  • 如何使用vue过滤器filter
    目录概述定义过滤器过滤器的使用自定义全局过滤器局部过滤器注意事项示例一(局部过滤器)示例二(全局过滤器)概述 在 vue2.0 之前,是有内置过滤器的,在2.0中已经没有内置的过滤器...
    99+
    2024-04-02
  • vue中过滤器如何使用
    这篇文章主要介绍“vue中过滤器如何使用”,在日常操作中,相信很多人在vue中过滤器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中过滤器如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-29
  • Vue 中filters过滤器如何使用
    这篇文章给大家介绍Vue 中filters过滤器如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、示例代码采用vue单文件组件,使用moment插件格式化日期<templ...
    99+
    2024-04-02
  • redis如何使用布隆过滤器
    布隆过滤器2个基本指令是bf.add和bf.exists,如果想要一次添加多个,就需要用到bf.madd 指令,同样如果需要一次查询多个元素是否存在,就需要用到bf.mexists 指令,基本使用如下:127.0.0.1:6379>&...
    99+
    2024-04-02
  • Vue中如何使用filters过滤器
    这篇文章主要为大家展示了“Vue中如何使用filters过滤器”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中如何使用filters过滤器”这篇文章吧。Vue.js 允许我们自定义过滤器,...
    99+
    2023-06-29
  • 如何正确的使用Shell过滤器
    如何正确的使用Shell过滤器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。常用的被作为过滤器使用的命令如下所示:命令说明awk用于文本处理的解释性程序设计语言...
    99+
    2023-06-06
  • ASP.NET MVC授权过滤器如何使用
    这篇文章主要介绍“ASP.NET MVC授权过滤器如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ASP.NET MVC授权过滤器如何使用”文章能帮助大家解决问题。过滤器过...
    99+
    2023-06-29
  • VUE中的filters过滤器如何使用
    这篇文章主要讲解了“VUE中的filters过滤器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VUE中的filters过滤器如何使用”吧!前言Vue.js 允许我们自定义过滤器,可...
    99+
    2023-06-29
  • Java过滤器Filter如何使用教程
    这篇“Java过滤器Filter如何使用教程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java过滤器Filter如何使用...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作