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