`
raymond.chen
  • 浏览: 1438181 次
  • 性别: 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

    自定义全局过滤器是SpringCloud Gateway的一个强大特性,允许我们注册自己的过滤器来处理所有路由的请求或响应。这种能力对于数据格式转换、API版本控制或者在服务间添加通用的请求头非常有用。 至于性能测试,...

    springcloud gateway 全局过滤器统一签名判定.doc

    在Spring Cloud Gateway中,全局过滤器(Global Filter)是一种强大的机制,用于在请求路由到具体的服务之前或之后执行通用的处理逻辑。在这个场景中,我们关注的是如何利用全局过滤器来实现统一的签名验证,这在...

    spring-cloud-gateway-example-master.zip

    Spring Cloud Gateway是Spring官方推出的第二代微服务网关,旨在替代 Zuul,其核心目标是简化API网关的开发和维护。它基于Spring Framework 5、Project Reactor和Spring Boot 2构建,支持高并发、低延迟的特性,...

    Spring Cloud Gateway的全局异常处理

    Spring Cloud Gateway作为一款基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建的云原生网关框架,它提供了强大的路由转发能力和灵活的过滤器模型,能够很好地满足微服务网关的各种需求。然而,在实际...

    spring cloud gateway 例子

    可能会讨论全局过滤器和路由级过滤器的区别。 4. **服务发现**:在云原生环境中,服务通常通过服务发现组件(如Eureka或Consul)注册和发现。例子可能展示如何配置Gateway使用这些服务发现机制。 5. **实战演示**:...

    spring cloud gateway跨域实现

    2. **自定义全局过滤器**: Spring Cloud Gateway允许通过实现`GlobalFilter`接口来自定义过滤器,进行请求处理。例如,可以创建一个名为`loginFilter`的过滤器,用于记录日志、验证访问权限等操作。在这个过滤器中...

    springcloud zuul gateway 服务网关

    SpringCloud Zuul Gateway 服务网关是Spring Cloud生态系统中的一个重要组件,它主要负责微服务架构中的路由转发和过滤器功能。Zuul是Netflix开源的一个边缘服务,而Gateway则是Spring Cloud针对Zuul进行的升级版,...

    springcloud getaway 全局过滤器.doc

    总结来说,自定义Spring Cloud Gateway全局过滤器是通过实现`GlobalFilter`接口并配置到Spring容器中完成的。这些过滤器可以用来实现诸如认证、限流、日志记录等跨路由的功能。同时,Eureka作为服务注册与发现的工具...

    SpringCloud.03.网关Gateway 配置文件

    在Spring Cloud生态体系中,Spring Cloud Gateway作为新一代的API网关,被广泛应用于微服务架构中,用于统一处理请求路由、过滤器链、限流、熔断等核心功能。本篇将详细介绍Spring Cloud Gateway的配置文件相关知识...

    spring-cloud-demo.zip

    总结起来,这个示例项目展示了如何使用 Spring Cloud Gateway 创建一个具备全局过滤器和统一鉴权功能的微服务网关。开发者可以通过学习和运行此项目,了解如何在实际应用中实现高效且安全的API路由管理。

    SpringCloudGateway2.1使用手册中文版.rar

    在使用 SpringCloudGateway2.1 使用手册中文版时,你可以找到关于如何配置路由、使用过滤器、集成服务发现、安全设置等方面的详细指导。手册中应该会包含以下内容: 1. **快速入门**:介绍如何创建基本的 Spring ...

    Spring-cloud-demo-master.zip

    7. **Spring Cloud Gateway**:在较新的 Spring Cloud 版本中,Zuul 被 Spring Cloud Gateway 取代,Gateway 作为新一代的 API 网关,提供了更强大的路由规则和过滤器功能。 8. **Actuator**:Spring Boot Actuator...

    spring-cloud项目_springcloud_springcloud项目_springcloud_spring-clou

    9. **Spring Cloud Gateway**: Spring Cloud Gateway 是新一代的 API 网关,取代了 Zuul,提供更高效、更灵活的路由、过滤器等功能,同时具备更好的性能和扩展性。 10. ** Sleuth 和 Zipkin**: Sleuth 是一个分布式...

    spring-cloud-gateway应用.rar

    Spring Cloud Gateway 是一款基于 Spring Framework 5 和 Spring Boot 2 构建的现代微服务网关,它旨在提供一种简单而有效的方式来路由请求,并对服务进行过滤。在分布式系统中,网关作为客户端与后端服务之间的统一...

    spring-cloud-example, SpringCloud相关DEMO(包含.zip

    SpringCloud是一个基于Spring Boot实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作...

    基于spring cloud gateway封装的微服务网关,通过nacos配置中心-eagle-gateway.zip

    5. **过滤器链**:深入理解 Spring Cloud Gateway 的过滤器链机制,包括全局过滤器和路由级过滤器的编写和调用顺序,以及如何使用它们来实现功能,如限流、降级、监控等。 6. **Eagle Gateway 封装特性**:研究 ...

    Spring Cloud alibaba 集成 Spring Cloud Gateway

    过滤器分为全局过滤器和路由过滤器,它们可以按照需求灵活组合使用。 5. **集成 Sentinel**:为了实现限流和降级,可以集成 Spring Cloud Alibaba 的 Sentinel 模块。Sentinel 提供了丰富的流量控制策略,如固定...

    SpringBoot+SpringCloud+nacos+gateway+mybatis搭建微服务

    同时,通过Spring Cloud Gateway设置路由规则和过滤器,实现动态路由、熔断、限流等功能,增强系统的健壮性。 总的来说,这个项目旨在利用Spring Boot的便利性,结合Spring Cloud的分布式能力,借助Nacos实现服务...

    SpringCloud Gateway应用案例

    过滤器分为全局过滤器和路由过滤器,前者对所有路由生效,后者只对特定路由生效。例如,`AddRequestHeader`过滤器可以在每个请求中添加自定义头部: ```java @Component public class AddHeaderGlobalFilter ...

Global site tag (gtag.js) - Google Analytics