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);
    }
相关推荐
覆东流17 分钟前
7.Java数组
java·开发语言·后端
m0_7190841120 分钟前
限流和获取请求ip的方法
java
码行山野赴时序归途31 分钟前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
lzhdim1 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert1 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
深漂的华哥2 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
ly76892 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
落魄大学生之流水线上谋生计3 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言
for_ever_love__3 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
ly76893 小时前
Python 全面入门:从核心语法到工程实践
开发语言·python