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();
我正在尝试根据经过身份验证的用户设置 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();