Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自ReactiveSecurityContext的Spring WebClient标头_Spring_Spring Boot_Spring Security_Spring Webflux_Spring Webclient - Fatal编程技术网

来自ReactiveSecurityContext的Spring WebClient标头

来自ReactiveSecurityContext的Spring WebClient标头,spring,spring-boot,spring-security,spring-webflux,spring-webclient,Spring,Spring Boot,Spring Security,Spring Webflux,Spring Webclient,我正在尝试根据经过身份验证的用户设置WebClient标头值,如下所示: webClient.post().header(HttpHeaders.AUTHORIZATION,getUserIdFromSession())… 及 公共字符串getUserIdFromSession(){ Mono authentication=ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication); //在

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

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

公共字符串getUserIdFromSession(){
Mono authentication=ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication);
//在此处执行某些操作以获取用户凭据并将其返回
}

我应该将所需的标题值存储在其他地方吗?因为在反应方式中,所有内容都返回Mono/Flux,我目前无法使用经过身份验证的用户数据,就像我在SpringMVC中使用的那样。在那里我可以只做
SecurityContextHolder.getContext().getAuthentication()

有什么原因你不只是简单地映射身份验证然后调用webclient?您也可以从方法返回
Mono

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

不知道这种方法,工作起来很有魅力,谢谢!
ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication)
.flatMap(auth -> webClient.post().header(HttpHeaders.AUTHORIZATION, auth.getUserId()).exchange();