全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP访问限制等等。
官方文档:
https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gatewayfilter-factories
基于官方我们编写全局过滤器代码
package cn.itcast.gateway; 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.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; //@Order(-1) @Component public class CustomGlobalFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("----->>>>>> custom global filter"); MultiValueMap<String, String> paras = exchange.getRequest().getQueryParams(); if ("javacui".equals(paras.getFirst("username"))){ System.out.println("----->>>>>> welcome admin come"); } return chain.filter(exchange); } @Override public int getOrder() { return -1; } }
如果存在多个过滤器,那么Order用于指定执行顺序。
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: