给webclient添加参数
Adding parameters to webclient
我需要帮助!
这是我的网络客户端
private WebClient client = WebClient.create("http://address:port");
public Mono<RespDto> translate(AuthPrincipal principal, ReqDto dto, String token) {
return client.get()
.uri(uriBuilder -> uriBuilder
.path("/api")
.queryParam("id", dto.getId())
.queryParam("content", dto.getContent())
.queryParam("profile", dto.getProfile())
.build())
.headers(h -> h.setBearerAuth(token.split(" ")[1]))
.retrieve()
.bodyToMono(RespDto.class);
}
这里是 api 我正在尝试检索
的控制器
@GetMapping("")
public Mono<?> trans(@AuthenticationPrincipal @ApiIgnore AuthPrincipal principal,
@Valid ReqDto reqDto) {
return service.function(principal, reqDto);
}
所以我的问题是服务功能检查主体 ID 的权限,但我知道如何通过 webclient 传递 AuthPrincipal 对象...
请帮助菜鸟!
您已经使用以下代码行提供 Bearer 身份验证令牌:.headers(h -> h.setBearerAuth(token.split(" ")[1]))
。如果这工作正常并且您能够针对目标 API 验证自己,那么 Spring 将在端点方法中注入 AuthPrincipal
(假设您的 Spring 安全配置/自定义工作正常)。
我需要帮助!
这是我的网络客户端
private WebClient client = WebClient.create("http://address:port");
public Mono<RespDto> translate(AuthPrincipal principal, ReqDto dto, String token) {
return client.get()
.uri(uriBuilder -> uriBuilder
.path("/api")
.queryParam("id", dto.getId())
.queryParam("content", dto.getContent())
.queryParam("profile", dto.getProfile())
.build())
.headers(h -> h.setBearerAuth(token.split(" ")[1]))
.retrieve()
.bodyToMono(RespDto.class);
}
这里是 api 我正在尝试检索
的控制器@GetMapping("")
public Mono<?> trans(@AuthenticationPrincipal @ApiIgnore AuthPrincipal principal,
@Valid ReqDto reqDto) {
return service.function(principal, reqDto);
}
所以我的问题是服务功能检查主体 ID 的权限,但我知道如何通过 webclient 传递 AuthPrincipal 对象...
请帮助菜鸟!
您已经使用以下代码行提供 Bearer 身份验证令牌:.headers(h -> h.setBearerAuth(token.split(" ")[1]))
。如果这工作正常并且您能够针对目标 API 验证自己,那么 Spring 将在端点方法中注入 AuthPrincipal
(假设您的 Spring 安全配置/自定义工作正常)。