Spring boot webflux 中实现 RequestContextHolder

  • 时间:
  • 浏览:2
  • 来源:uu快3棋牌_uu快3讨论群_规律

上段代码是透传 web 中的 request 中的 user_agent 请求头到 WebClient 中。

不再必须通过参数传递 request。在 Spring webflux 中并没提供该功能,使得大伙儿在 Aop 而且很多很多的场景中获取 request 变成了有一三个 多奢望???

mica 中的实现比较简单,首先是大伙儿的 ReactiveRequestContextFilter

如梦技术对此篇文章有最终所有权,转载请注明出处,参考也请注明,谢谢!

大意是:从 Reactor 3.1.0 结束英语 英语 英语 提供了有一三个 多高级功能,上还可以 与 ThreadLocal 媲美,应用于 Flux 和 Mono 的上下文工具 Context。更多请大伙儿查阅官方文档,对英文比较抵触的大伙儿上还可以 使用 google 翻译。

首先我不想到的是看看 spring-security 中是是是否是是有对于的处里方案,而且在 spring-security 中大伙儿也是上还可以 通过 SecurityContextHolder 很方便快捷的获取当前登录的用户信息。

ReactiveRequestContextHolder 工具:

Filter 中直接将 request 存储到 Context 上下文中。

此示例来源于开源中国问答中笔者的回复: 《如可在gateway 中获取 webflux的 RequestContextHolder》

找到了 ReactorContextWebFilter,大伙儿来看看 security 中他是为什么会么会会么会实现的。

https://github.com/spring-projects/spring-security/blob/master/web/src/main/java/org/springframework/security/web/server/context/ReactorContextWebFilter.java#L43

Spring boot web 中大伙儿上还可以 通过 RequestContextHolder 很方便的获取 request

源码上面大伙儿上还可以 看到 他利用有一三个 多 Filter,chain.filter(exchange) 的返回值 Mono 调用了 subscriberContext 法律措施。

这麼大伙儿就去了解一下这一 reactor.util.context.Context。找到 reactor 官方文档中的 context 章节:https://projectreactor.io/docs/core/release/reference/#context