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);
    }
相关推荐
大肥羊学校懒羊羊1 分钟前
质因数个数问题:高效分解算法详解
开发语言·c++·算法
新缸中之脑3 分钟前
用Claude for Word审查法律合同
开发语言·c#·word
沐知全栈开发5 分钟前
SQLite 子查询
开发语言
indexsunny8 分钟前
互联网大厂Java求职面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·面试·kafka·oauth2·microservices
Codigger官方9 分钟前
生态破局:从孤岛工具到协同奇点
开发语言·人工智能·程序人生
RATi GORI10 分钟前
SQL中的DISTINCT、SQL DISTINCT详解、DISTINCT的用法、DISTINCT注意事项
java·数据库·sql
莫逸风12 分钟前
【java-core-collections】B+ 树深度解析
android·java·开发语言
gihigo199812 分钟前
MATLAB中实现混沌序列的相空间重构
开发语言·matlab·重构
xzl0414 分钟前
RT-Thread 5.2.2内核模块
开发语言·rt-thread
Wenzar_14 分钟前
**发散创新:基于算子融合的深度学习推理优化实战**在现代AI推理场景中,模型性能瓶颈往往不是由单一算子决定的,而是多个连续算子之间数
java·人工智能·深度学习