New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gateway webflux 装饰器模式下提示未成功初始化上下文 #121
Comments
贴的代码太乱了 你重新整理一下 |
@OverRide
} |
请一下问解决方案是? @llm163520 @click33 |
我这边也暂时未解决 |
我的场景和你类型,在gateway的filter中获取登录的用户。我现在的解决的思路是,获取头的token,注入satoken的SaTokenDaoRedisJackson。通过redis存储获取。 |
这样也是一直办法,如果原生API能支持的话就更好了 |
参考图例
伪代码
@OverRide
public Mono filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
Long requestStartTime = System.currentTimeMillis();
ServerRequest serverRequest = ServerRequest.create(exchange, codecConfigurer.getReaders());
Mono modifiedBody = serverRequest.bodyToMono(String.class).flatMap(body -> Mono.just(body));
BodyInserter bodyInserter = BodyInserters.fromPublisher(modifiedBody, String.class);
HttpHeaders headers = new HttpHeaders();
headers.putAll(request.getHeaders());
CachedBodyOutputMessage outputMessage = new CachedBodyOutputMessage(exchange, headers);
// 写入全局上下文 (同步)
SaReactorSyncHolder.setContent(exchange);
return bodyInserter.insert(outputMessage, new BodyInserterContext()).then(Mono.defer(() -> {
return chain.filter(exchange.mutate().request(new ServerHttpRequestDecorator(exchange.getRequest()) {
@OverRide
public Flux getBody() {
return outputMessage.getBody();
}
The text was updated successfully, but these errors were encountered: