我的Spring Boot Webflux -application ( Netty ) 使用Thymeleaf -templates输出 HTML 。在一个处理程序方法中,我使用WebClient
外部 id-provider 进行身份验证。现在我想将生成的身份验证令牌存储在会话变量中,以便我可以在后续的 Controller/Handler 方法中重用它。如果我将令牌存储在模型变量中,Spring/Webflux 会解析Mono
渲染前并提供生成的令牌字符串以供视图(Thymeleaf 模板)使用。但我找不到将令牌存储在会话变量中的方法。WebSession 对我来说就足够了,因为我不会运行具有多个节点的应用程序。
我尝试过的代码(Kotlin):
@PostMapping("/login")
fun login(@Valid loginForm: LoginForm, model: Model, webSession: WebSession): String {
val tokenMono: Mono<String> = loginService.login(loginForm.email, loginForm.password)
model.addAttribute("token", tokenMono) // works and the token is available as a String in resulting view template
webSession.addAttribute("token", tokenMono) // session-variable "token" is null in subsequent requests.
return "login/success"
}