gateway全局token过滤器

添加gateway依赖

yaml 复制代码
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

创建一个tokenFilter

实现全局过滤器GlobalFilter,并且实现fitler方法

yaml 复制代码
    @Value("${cn.token.key}")
    private String tokenKey;

  public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpResponse response = exchange.getResponse();
        List<String> tokens = exchange.getRequest().getHeaders().get("token");
        if(ObjectUtil.isEmpty(tokens)){
            log.debug("请传输token");
            response.setStatusCode(HttpStatus.PAYMENT_REQUIRED);
            return response.setComplete();
        }
        String token = tokens.get(0);
        if(ObjectUtil.isEmpty(token)){
            log.debug("token不能为空");
            response.setStatusCode(HttpStatus.PAYMENT_REQUIRED);
            return response.setComplete();
        }

        boolean b = false;
        try {
            //利用jwt对token进行验证
            JWTValidator.of(token).validateAlgorithm(JWTSignerUtil.hs256(tokenKey.getBytes())).validateDate();
            b = true;
        }catch (Exception ex){
            ex.printStackTrace();
            log.error("token不正确");
        }
        if(!b){
            response.setStatusCode(HttpStatus.UNAUTHORIZED);
            return response.setComplete();
        }
        return chain.filter(exchange);
    }
相关推荐
荔枝hu6 分钟前
springboot和shiro组合引入SseEmitter的一些坑
java·spring boot·后端·sseeitter
老华带你飞24 分钟前
健身房|基于springboot + vue健身房管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
JIngJaneIL29 分钟前
基于Java酒店预约系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
编程小Y1 小时前
php.ini 的核心作用与全面解析
开发语言·php
曹牧1 小时前
Java:List<Map<String, String>>转换为字符串
java·开发语言·windows
我是一棵无人问荆的小草1 小时前
编码演变史
开发语言·c++
Unstoppable222 小时前
代码随想录算法训练营第 56 天 | 拓扑排序精讲、Dijkstra(朴素版)精讲
java·数据结构·算法·
偶像你挑的噻2 小时前
2.Qt-基础核心以及信号与槽
开发语言·qt
qinyia2 小时前
WisdomSSH解决docker run命令中log-opt参数不支持导致的容器创建失败问题
java·docker·eureka
potato_may2 小时前
CC++ 内存管理 —— 程序的“五脏六腑”在哪里?
c语言·开发语言·数据结构·c++·内存·内存管理