来自reactivesecuritycontext的spring webclient标头

xam8gpfp  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(306)

我正在尝试将webclient头值相应地设置为经过身份验证的用户,如下所示: 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
}

我应该将所需的头值存储在其他地方吗?因为在被动方式下,所有东西都返回mono/flux,我目前无法使用经过身份验证的用户数据,就像我在springmvc中使用的那样。那我就可以做了 SecurityContextHolder.getContext().getAuthentication()

gkl3eglg

gkl3eglg1#

你为什么不直接Map身份验证然后调用webclient?你也可以把钱还回去 Mono<String> 从你的方法

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

相关问题