美文网首页
gateway网关拦截

gateway网关拦截

作者: 半日孤独 | 来源:发表于2020-09-08 11:37 被阅读0次

实现 GlobalFilter, Ordered

@Component
@Slf4j
public class MyGateWayFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        String token = request.getHeaders().getFirst("X-token");
        if (("/api/login").equals(request.getURI().getPath())) {
            //登录接口,通过
            return chain.filter(exchange);
        }
        // 如果请求头不存在 Token
        if (token == null) {
            return this.getResponseError(exchange, "token不能为空,请重新登录");
        }
       return chain.filter(exchange);
    }
    @Override
    public int getOrder() {
        return 0;
    }

拦截失败自定义返回错误信息

    private Mono<Void> getResponseError(ServerWebExchange exchange, String msg) {
        ServerHttpResponse response = exchange.getResponse();
        JSONObject message = new JSONObject();
        message.put("code", -1);
        message.put("message", msg);
        byte[] bits = message.toJSONString().getBytes(StandardCharsets.UTF_8);
        DataBuffer buffer = response.bufferFactory().wrap(bits);
        response.setStatusCode(HttpStatus.UNAUTHORIZED);
        //指定编码,否则在浏览器中会中文乱码
        response.getHeaders().add("Content-Type", "text/plain;charset=UTF-8");
        return response.writeWith(Mono.just(buffer));
    }

getOrder

此方法代表拦截优先级,数字越低,优先级越高。

相关文章

  • gateway网关拦截

    实现 GlobalFilter, Ordered 拦截失败自定义返回错误信息 getOrder 此方法代表拦截优先...

  • springCloud gateway网关拦截修改

    1、springcloud网关底层使用的是响应式+ServerHttpRequest。 2、网关主要作用是鉴权和转...

  • Api网关(Spring cloud Gateway)

    1. Spring cloud Gateway网关 什么是网关? 网关就是网络请求的统一入口。gateway是sp...

  • Gateway网关

    Gateway网关: 在介绍之前,先要明白Gateway的作用,为什么用Gateway。 从图中能够看到,网关在微...

  • 微服务中用户信息传递的解决方案

    思路: gateway网关过滤器中将用户信息添加到请求头中 被转发的服务中,写一个拦截器,拦截所有请求,获取请求头...

  • 高级框架第十二天Gateway:

    Gateway:网关 主要内容 1.API网关 2.Spring Cloud Gateway介绍 3.Gatewa...

  • Gateway

    Gateway | 简介 Spring Cloud Gateway 是 Spring 官方提供的 API 网关; ...

  • 2020-02-14 网关

    网关的定义 网关(Gateway)又称网间连接器、协议转换器。顾名思义,网关(Gateway)就是一个网络连接到另...

  • spring-cloud-gateway动态路由

    spring cloud gateway 动态路由实现: gateway-server(网关服务) dynamic...

  • Spring Cloud 全家桶

    Eureka [注册中心] GateWay [网关] Ribbon ...

网友评论

      本文标题:gateway网关拦截

      本文链接:https://www.haomeiwen.com/subject/awudektx.html