请求 spring 云网关中全局过滤器中的另一项服务
Request to an other service in a GlobalFilter in spring cloud gateway
我有一个微服务负责生成具有不同信息的 JWT。
出于某种原因,Spring 网关使用自定义过滤器注入了 jwt。
问题是,过滤器无法在响应之前进行阻止。
因此过滤器在 jwt 可以注入请求之前被链接起来。
有解决此问题的想法吗?
查看我的过滤器:
[...]
@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);
});
}
我有一个微服务负责生成具有不同信息的 JWT。
出于某种原因,Spring 网关使用自定义过滤器注入了 jwt。
问题是,过滤器无法在响应之前进行阻止。
因此过滤器在 jwt 可以注入请求之前被链接起来。
有解决此问题的想法吗?
查看我的过滤器:
[...]
@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);
});
}