springcloud3 GateWay的断言和filter操作
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud3 GateWay的断言和filter操作相关的知识,希望对你有一定的参考价值。
一 gateway的断言操作
1.1 断言操作
1.在配置文件配置如下:意思为:匹配到path设置的路径 and 在after设置的时间后执行。
2.启动9001,9002,9003,9004,9007 如下
3.访问,此刻时间还没有到达设置的时间,进行访问
稍等一会,满足在after设定的时间之后,再次访问
1.2 其他情况的配置
1.配置cookie - Cookie=username,zzyy 2.配置头部 - Header=X-Request-Id, \\d+ # 请求头要有X-Request-Id属性并且值为整数的正则表达式
......
二 gateway的filter
2.1 自定义filter对应
案例原理: 自定义fliter 实现对请求参数必须含有uname参数,否则进行拦截掉。
2.2 自定义filter的拦截器
package com.ljf.mscloud.filter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import java.util.Date;
/**
* @auther zzyy
* @create 2020-02-21 16:40
*/
@Component
@Slf4j
public class MyLogGateWayFilter implements GlobalFilter, Ordered
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
log.info("***********come in MyLogGateWayFilter: "+new Date());
String uname = exchange.getRequest().getQueryParams().getFirst("uname");
if(uname == null)
log.info("*******用户名为null,非法用户,o(╥﹏╥)o");
exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
return exchange.getResponse().setComplete();
return chain.filter(exchange);
@Override
public int getOrder()
return 0;
2.3 测试
1.启动9001,9002,9003,9004,9007 如下:
1.不携带uname参数
2.携带uname参数
以上是关于springcloud3 GateWay的断言和filter操作的主要内容,如果未能解决你的问题,请参考以下文章