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);
    }
相关推荐
程序员-周李斌4 分钟前
Java 死锁
java·开发语言·后端
皮皮林5511 小时前
Prometheus+Grafana,打造强大的监控与可视化平台
java
JasmineWr1 小时前
CompletableFuture相关问题
java·开发语言
零雲1 小时前
java面试:知道java的反射机制吗
java·开发语言·面试
Jeremy爱编码1 小时前
实现 Trie (前缀树)
开发语言·c#
laocooon5238578861 小时前
插入法排序 python
开发语言·python·算法
你的冰西瓜1 小时前
C++中的list容器详解
开发语言·c++·stl·list
java1234_小锋2 小时前
Java进程占用的内存有哪些部分?
java
就不掉头发2 小时前
I/O复用
运维·服务器·c语言·开发语言
sxlishaobin2 小时前
Spring Bean生命周期详解
java·后端·spring