Spring WebClient header 来自 ReactiveSecurityContext

Spring WebClient header from ReactiveSecurityContext

我正在尝试根据经过身份验证的用户设置 WebClient header 值,如下所示:

webClient.post().header(HttpHeaders.AUTHORIZATION, getUserIdFromSession())...

public String getUserIdFromSession() {
  Mono<Authentication> authentication = ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication);

  //do something here to get user credentials and return them
}

我应该将所需的 header 值存储在其他地方吗?因为以反应方式,所有 returns a Mono/Flux 并且我目前无法使用经过身份验证的用户数据将它与 Spring MVC 一起使用。在那里我可以做 SecurityContextHolder.getContext().getAuthentication()

您是否有理由不只是平面映射身份验证然后调用网络客户端?您也可以只 return 来自您的方法

Mono<String>
ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication)
.flatMap(auth -> webClient.post().header(HttpHeaders.AUTHORIZATION, auth.getUserId()).exchange();