1

我正在尝试编写可以提取特定cookie并将信息存储在ContextRequest中的中间件。这是我的测试代码:

 def cookie[F[_]: Sync](
               logger: Logger[F]
  ): Kleisli[F, Request[F], ContextRequest[F, Option[Cookie]]] =
    Kleisli { request: Request[F] =>
      for {
      _ <- logger.debug(s"finding cookie")
      _ <- logger.debug(request.cookies.map(_.name).mkString(","))
      } yield ContextRequest(none[Cookie], request)
    }

然后我像这样使用它:

def httpApp: HttpApp[F] = cookie(logger).mapK(OptionT.liftK).andThen(routesWithCookieContext).orNotFound

问题是:请求没有任何 cookie,所以我在 Chrome 开发工具和日志中的请求详细信息中看到了它们。我做错了什么以及如何使它起作用?

4

1 回答 1

0

原来这是cookie内容的问题。我正在使用 Circle 的 .asJson.noSpaces 将案例类转换为字符串并将其写入 cookie 的值。但由于某种原因,带有 json 值的 cookie 不起作用。

于 2020-06-08T04:07:10.040 回答