我有这些返回 Monos 的服务方法,我正在尝试用它们设置 cookie。这是行不通的。有谁知道该怎么做吗?
我需要它返回 HttpResponse
block()
会导致错误提示 java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread default-nioEventLoopGroup-2-4
@Post
public Mono<HttpResponse<Mono<UserDto>>> login(@Body LoginDto loginDto, @Header(value = "User-Agent") String userAgentStr,
@CookieValue(value = "myapp-auth-deviceId") UUID deviceId) {
return registrationService.login(loginDto)
.flatMap(user -> {
MutableHttpResponse<Mono<UserDto>> httpResponse = HttpResponse.ok(Mono.just(user));
return registrationService.registerDevice(userAgentStr, deviceId, user)
.flatMap(device -> registrationService.getJwtToken(user, device))
.flatMap(jwtToken -> {
httpResponse.cookie(Cookie.of(DEVICE_ID_COOKIE_NAME, deviceId.toString()).path("/").maxAge(365 * 24 * 3600));
httpResponse.cookie(Cookie.of(AUTH_COOKIE_NAME, jwtToken).maxAge(365 * 24 * 3600));
return Mono.just((HttpResponse<Mono<UserDto>>) httpResponse);
});
}).single();
}
2.设置cookie: --> 使用 HttpResponse.cookie() 方法创建带有 cookie 的响应。