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);
    }
相关推荐
C+-C资深大佬20 分钟前
C++数据类型
开发语言·c++·算法
ID_1800790547325 分钟前
日本乐天商品详情API接口的请求构造与参数说明
开发语言·python·pandas
派大鑫wink32 分钟前
【Day34】Servlet 进阶:会话管理(Cookie vs Session)
java·开发语言·学习方法
多米Domi01136 分钟前
0x3f 第35天 电脑硬盘坏了 +二叉树直径,将有序数组转换为二叉搜索树
java·数据结构·python·算法·leetcode·链表
猫天意1 小时前
【深度学习小课堂】| torch | 升维打击还是原位拼接?深度解码 PyTorch 中 stack 与 cat 的几何奥义
开发语言·人工智能·pytorch·深度学习·神经网络·yolo·机器学习
zqmattack1 小时前
SQL优化与索引策略实战指南
java·数据库·sql
crossaspeed1 小时前
Java-线程池(八股)
java·开发语言
带刺的坐椅1 小时前
又一个项级的 Java Multi Agent 开源项目
java·ai·agent·solon·智能体
Voyager_42 小时前
StringRedisTemplate 和 RedisTemplate 的区别是什么?
java·spring boot
杏花春雨江南2 小时前
JavaWeb企业级项目实战:从SSH到SSM演进 + MQ/Redis/ES高可用架构落地全复盘(实战干货+避坑指南)
java·jvm·spring