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);
    }
相关推荐
逝水无殇14 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
这是个栗子15 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ15 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香15 小时前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
右耳朵猫AI15 小时前
PHP周刊2026W28 | 安全更新、Laravel 13.18、Twig 3.28
开发语言·php·laravel
second6015 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴16 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm16 小时前
linux之线程概念和控制
linux·开发语言·c++
掘金_答案16 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
JackieZhengChina16 小时前
零依赖轻量级JS悬浮提示插件title2tip-js的使用教程
开发语言·javascript·ecmascript