过滤器其实是路由转发+过滤器

自定义过滤器

首先创建一个类继承下边两个类,实现过滤器

然后在启动项中通过创建bean的方式创建路由器

@Component
public class TimeFilter implements GatewayFilter, Ordered {

private static final Logger logger = LoggerFactory.getLogger(TimeFilter.class);

private static final String ELAPSED_TIME_BEGIN = "timeBegin";
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
exchange.getAttributes().put(ELAPSED_TIME_BEGIN, System.currentTimeMillis());
return chain.filter(exchange).then(
Mono.fromRunnable(() -> {
Long startTime = exchange.getAttribute(ELAPSED_TIME_BEGIN);
if (startTime != null) {
logger.info(exchange.getRequest().getURI().getRawPath() + ": " + (System.currentTimeMillis() - startTime) + "ms");
}
})
);
}

@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
}
 @Bean
public RouteLocator customerRouteLocator(RouteLocatorBuilder builder) {
// @formatter:off
return builder.routes()
// .route(r -> r.path("/consulserver/**")
// .filters(f -> f.stripPrefix(1)
// .filter(new TimeFilter())
// .addResponseHeader("X-Response-Default-Foo", "Default-Bar"))
// .uri("lb://consulserver")
// .order(0)
// .id("fluent_customer_service")
// )
// .build();


全局过滤器只需要把继承的类改变一下就行了
之后在启动项中创建这个类的bean就行了
public class TokenFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

String token = exchange.getRequest().getQueryParams().getFirst("token");
if (token == null||token.isEmpty()){
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange);
}

@Override
public int getOrder() {
return 0;
}
}
在启动类中创建
//    @Bean
// public TokenFilter tokenFilter(){
// return new TokenFilter();
// }

最新文章

  1. c——I/O Multiplexing笔记
  2. Codeforces Round #245 (Div. 2) B - Balls Game
  3. C/C++文件操作1
  4. php接口post提交方法 。
  5. JavaScript创建对象的写法
  6. bzoj3294
  7. 如何在ios手机端的Safari浏览器 中“查看网页源代码”
  8. 关于fastclick.js
  9. 秒味课堂Angular js笔记------Angular js中的工具方法
  10. Word Amalgamation
  11. 说说Request.Params[key]和Request[key]
  12. Android 动画的分类
  13. .htaccess 保护文件夹
  14. PAT (Advanced Level) 1014. Waiting in Line (30)
  15. 使用hubuild,mui开发微信app—首页(一)
  16. java 之 单例模式(大话设计模式)
  17. JavaWeb学习笔记四 request&amp;response
  18. 【效率神奇】Github丧心病狂的9个狠招
  19. react native 打包上架
  20. 在SQL中查询某列具有相同值的数据

热门文章

  1. ent orm笔记1---快速尝鲜
  2. 微信小程序——导航栏组件
  3. 力扣Leetcode 50. 实现Pow(x, n)
  4. 阿里云体验实验室 教你《搭建Hadoop环境》
  5. Scrapy命令行调用传入自定义参数
  6. js中使用const声明变量时需要注意
  7. unity3d屏幕截图功能
  8. 前端通过jqplot绘制折线图
  9. 利用负margin-bottom去除列表最后一个li元素的border-bottom
  10. H5选择器