java - 请求 Spring Cloud Gateway 中 GlobalFilter 中的其他服务

标签 java spring spring-cloud spring-webflux

我有一个微服务负责生成具有不同信息的 JWT。

出于某种原因,Spring 网关使用自定义过滤器注入(inject) jwt。

问题是,过滤器无法在收到响应之前进行阻止。

因此,在将 jwt 注入(inject)请求之前,过滤器会被链接起来。

有办法解决这个问题吗?

查看我的过滤器:

[...]
@Component
public class AddJwtFilter implements GlobalFilter {
[...]

        Mono<String> response = webClient.get().uri("https://localhost:9001/security/generatejwt/{accessToken}", accessToken).retrieve().bodyToMono(String.class);

        response.subscribe(System.out::println);

        System.out.println("I return the chain");
        return chain.filter(exchange);
    }
}

System.out::println 不是我想要的真正处理,它只是检查响应何时完成。 请求是正确的,“println”给了我预期的响应。

非常感谢您的回复。

最佳答案

就像评论中所说,您需要链接所有内容。

@Component
public class AddJwtFilter implements GlobalFilter {
    return webClient.get()
             .uri("https://localhost:9001/security/generatejwt/{accessToken}", 
                  accessToken)
             .retrieve()
             .bodyToMono(String.class).flatMap(response -> {
                 System.out.println(response);
                 return chain.filter(exchange);
             });
}

关于java - 请求 Spring Cloud Gateway 中 GlobalFilter 中的其他服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58992338/

相关文章:

java - 执行器线程未终止

java - 如何创建类的公共(public)对象以在 TestNG 类的所有方法中使用?

java 8 与 Glassfish 4.1 Artifact HelloWorld :war exploded: Server is not connected. 部署不可用

java - Spring LDAP 支持的 LDAP 提供程序列表

java - "mvn spring-boot:run"与 "java jar target/xxx.jar"

spring - 功能区负载均衡算法

spring - 使用 Spring Cloud FeignClients 时出现 404

java - Drools:使用在 session 创建时为新插入的规则定义的全局变量

java - 使用 toString() 转换为字符串时,NULL 被附加到文件的开头

spring-boot - Eureka 客户端异常 com.netflix.discovery.shared.transport.TransportException : Cannot execute request on any known server