如何在 Micronaut Reactive Controllers 中设置 cookie

问题描述 投票:0回答:1

我有这些返回 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();
      }

java reactive-programming reactive micronaut
1个回答
0
投票
  1. 导入所需的类: -->cookie 响应 cookie。 -->HttpResponse 发送包含 cookie 的响应。

2.设置cookie: --> 使用 HttpResponse.cookie() 方法创建带有 cookie 的响应。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.