`
raymond.chen
  • 浏览: 1418115 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

服务网关Spring Cloud Gateway -- 全局过滤器

 
阅读更多

全局过滤器GlobalFilter

        全局过滤器是一系列特殊的过滤器,会根据条件应用到所有路由中。其不需要在配置文件中配置。可以用它来实现很多统一化处理的业务需求,比如权限认证,IP访问限制等等。

 

    GlobalFilter内置的实现类有:

         AdaptCachedBodyGlobalFilter         Integer.MIN_VALUE + 1000         用于缓存请求体的过滤器

        WebClientWriteResponseFilter         -1                                                       处理前缀为http或https的路由

        NettyWriteResponseFilter                   -1                                                       处理前缀为http或https的路由

        ForwardPathFilter                                 0

        RouteToRequestUrlFilter                    10000                                                路由到指定url的过滤器

        LoadBalancerClientFilter                    10100                                               负载均衡客户端过滤器,处理前缀为lb的路由

        WebsocketRoutingFilter                      Integer.MAX_VALUE - 1                处理前缀为ws或wss的路由

        WebClientHttpRoutingFilter                Integer.MAX_VALUE                     处理前缀为http或https的路由

        NettyRoutingFilter                                Integer.MAX_VALUE                      处理前缀为http或https的路由

        ForwardRoutingFilter                          Integer.MAX_VALUE                       转发路由过滤器,处理前缀为forward的路由

 

    自定义全局过滤器:

          自定义全局过滤器需要实现GlobalFilter接口,如果要指定执行顺序,可以同时实现Ordered接口

/**
 * 认证过滤器
 */
//@Component
public class AuthFilter implements GlobalFilter {
	@Override
	public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
		String token = exchange.getRequest().getQueryParams().getFirst("token");
        if ("token".equals(token)) {
            return chain.filter(exchange);
        }
        
        //响应报文数据
        Response data = new Response("401", "非法请求");
        byte[] dataArr = JSONObject.fromObject(data).toString().getBytes(StandardCharsets.UTF_8);
        
        ServerHttpResponse httpResponse = exchange.getResponse();
        DataBuffer dataBuffer = httpResponse.bufferFactory().wrap(dataArr);
        httpResponse.setStatusCode(HttpStatus.UNAUTHORIZED);
        httpResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
        return httpResponse.writeWith(Mono.just(dataBuffer));
	}
}

 

         定义过滤器Bean对象:

@Bean
@Order(1)
public AuthFilter getAuthFilter(){
	return new AuthFilter();
}

 

分享到:
评论

相关推荐

    springcloud Gateway网关-压测用.zip

    网关里包括一个简单aop代理,使用简单路由及默认过滤器,还有5个一样的修改request body的自定义全局过滤器。

    Spring Cloud Gateway的全局异常处理

    Spring Cloud Gateway的全局异常处理 Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。 网关都是给接口做...

    CVE-2022-22947-Spring-Cloud-Gateway 内存马POC

    Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的 API 网关,它旨在为微服务架构提供一种简单、有效、统一的 API 路由管理方式。 Spring官方博客发布了一篇关于Spring Cloud Gateway的CVE...

    spring-cloud-examples

    Spring Cloud使用的各种示例,以最简单、...spring-cloud-sleuth-zipkin: 利用Sleuth、Zipkin对Spring Cloud应用进行服务追踪分析 spring-boot-admin-eureka: 使用Spring Boot Admin 对Spring Cloud集群进行监控示例

    spring-cloud-gateway-demo.zip

    Spring cloud alibaba nacos与spring cloud gateway结合demo,项目注册,网关服务。

    springcloud微服务框架+服务模版

    Spring Cloud使用的各种示例,以最简单、...spring-cloud-sleuth-zipkin: 利用Sleuth、Zipkin对Spring Cloud应用进行服务追踪分析 spring-boot-admin-eureka: 使用Spring Boot Admin 对Spring Cloud集群进行监控示例

    spring-cloud使用的各种示例

    - [springcloud(十六):服务网关 Spring Cloud GateWay 服务化和过滤器](http://www.ityouknow.com/springcloud/2019/01/19/spring-cloud-gateway-service.html) - [springcloud(十七):服务网关 Spring Cloud ...

    spring-cloud-gateway-access-log-starter:Spring Cloud Gateway访问日志自定义启动器

    春天云网关访问日志启动器简单的Spring Cloud Gateway Access日志启动器建造./gradlew clean build -x test财产 gateway : accesslog : enabled : true # enable or disable logging, default value is true....

    Spring Cloud.docx

    spring-cloud-eureka Spring Cloud(一)服务的注册与发现(Eureka) spring-cloud-consul Spring Cloud(二) Consul 服务治理实现 spring-cloud-ribbon Spring Cloud(三) 服务提供者 Eureka + ...

    springcloud-gateway-master.zip

    gateway网关的微服务,其中包含鉴权,jwt、token登录、可以设置白名单、配置单接口熔断的时间以及全局微服务调用熔断降级的时间、网关限流(设置了还未尝试)、过滤以及重试(需要自己去补充)、在网关中配置静态...

    Spring Cloud Gateway是Spring官方基于Spring 5.0.zip

    Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway...

    Spring Cloud Gateway 2.1 使用手册中文版

    Spring Cloud Gateway旨在提供一种简单而有效的API路由方式,并为其提供横切关注点,例如:安全,监控/指标和弹性。 特征: (1)构建于Spring Framework 5,Project Reactor 和 Spring Boot 2.0 (2)能够匹配任何...

    Spring Cloud Gateway 2.1 使用手册中文版.pdf

    这个项目提供了一个构建在 Spring 生态系统之上的 API 网关,包括:Spring 5,Spring ... Spring Cloud Gateway 旨在提供一种简单而有效的 API 路 由方式,并为其提供横切关注点,例如:安全,监控/指标和弹性。

    springcloud下通过gateway转发websocket

    websocket,springcloud

    Spring Cloud Gateway 实现代码

    2. 基于spring-boot 的2.3.12.RELEASE版本, spring-cloud的Hoxton.SR12版本,spring-cloud-alibaba的2.2.8.RELEASE版本 3. Spring Cloud Gateway版本为2.2.9.RELEASE版本 4. 代码需配合Nacos一起使用

    spring-cloud-gateway-bench:比较zuul和Spring Cloud Gateway的简单基准

    Spring Cloud Gateway基准测试 TL; DR 代理人 平均延迟 平均需求/秒/线程 网关 6.61毫秒 3.24千 链接的 7.62毫秒 2.82千 祖尔 12.56毫秒 2.09千 没有任何 2.09毫秒 11.77千 终端1(简单的Web服务器) cd static ./...

    spring cloud gateway跨域实现

    spring cloud gateway是一个spring提供的用于构建网关的子项目,文档内容主要是实现网关跨域。

    springcloud zuul gateway 服务网关

    springcloud zuul gateway 服务网关 http://knight-black-bob.iteye.com/blog/2357683

    websocket-cluster:这是一个针对WebSocket集群服务器的Spring Cloud项目。

    实战Spring Cloud的WebSocket体现此项目是一个WebSocket实施的实践,基于Spring Cloud。原理我们利用一致性哈希算法,构造一个哈希环,网关监听WebSocket服务实例的上下线消息,根据实例的变化动态地更新哈希环。将...

    spring cloud zookeeper gateway

    适用最新的spring cloud稳定版,微服务注册中心适用最新稳定版zookeeper。适用spring cloud gateway作为网关服务的demo

Global site tag (gtag.js) - Google Analytics