From 0acd71150e0af05c1cfa858f620bb9eed572d824 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Mon, 10 Feb 2025 23:03:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(gateway):=20=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=BD=91=E7=AE=A1=E6=B7=BB=E5=8A=A0Token=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/OnceTokenGatewayFilterFactory.java | 32 +++++++++++++++++++ .../src/main/resources/application-route.yml | 3 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 gateway/src/main/java/cn/bunny/filter/OnceTokenGatewayFilterFactory.java diff --git a/gateway/src/main/java/cn/bunny/filter/OnceTokenGatewayFilterFactory.java b/gateway/src/main/java/cn/bunny/filter/OnceTokenGatewayFilterFactory.java new file mode 100644 index 0000000..ae455e8 --- /dev/null +++ b/gateway/src/main/java/cn/bunny/filter/OnceTokenGatewayFilterFactory.java @@ -0,0 +1,32 @@ +package cn.bunny.filter; + +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractNameValueGatewayFilterFactory; +import org.springframework.http.HttpHeaders; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.stereotype.Component; +import reactor.core.publisher.Mono; + +import java.util.UUID; + +@Component +public class OnceTokenGatewayFilterFactory extends AbstractNameValueGatewayFilterFactory { + @Override + public GatewayFilter apply(NameValueConfig config) { + + return (exchange, chain) -> chain.filter(exchange) + .then(Mono.fromRunnable(() -> { + ServerHttpResponse response = exchange.getResponse(); + HttpHeaders headers = response.getHeaders(); + String value = config.getValue(); + + if ("uuid".equalsIgnoreCase(value)) { + value = UUID.randomUUID().toString(); + } else if ("uuid2".equalsIgnoreCase(value)) { + value = "JWT生产内容"; + } + + headers.add(config.getName(), value); + })); + } +} diff --git a/gateway/src/main/resources/application-route.yml b/gateway/src/main/resources/application-route.yml index 383277d..3febfbb 100644 --- a/gateway/src/main/resources/application-route.yml +++ b/gateway/src/main/resources/application-route.yml @@ -39,4 +39,5 @@ spring: - RewritePath=/api/cloud2/?(?.*), /cloud2/$\{segment} # 网关路径重写 # 默认过滤器 default-filters: - - AddResponseHeader=X-Response-Abc,123 # 在请求头中添加 \ No newline at end of file + - AddResponseHeader=X-Response-Abc,123 # 在请求头中添加 + - OnceToken=X-Response-Token, uuid # 配置完成后在响应头中添加 UUID \ No newline at end of file