Filter(过滤):指的是Spring 框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。
代码实现
在项目 cloud-gateway-gateway-9527 修改
- 在启动类同级新增 filter 目录,filter 目录下新增类 MyLogGateWayFilter
/**
* 全局过滤器
*/
@Component
public class MyLogGateWayFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
System.out.println("********全局过滤器***********");
//获取请求参数 name 的值
String name = exchange.getRequest().getQueryParams().getFirst("name");
if(name == null ){
System.out.println("--------用户名为null非法登录-------");
exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange);
}
/**
* 优先级: 数字越小优先级越高
* @return
*/
@Override
public int getOrder() {
return 0;
}
}
-
测试
拒绝访问:
不带name属性.png
正常访问:
带name属性.png
网友评论