在 http4s 的中间件中获取 cookie?



我正在尝试编写中间件,该中间件将提取特定的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 开发工具和日志中的请求详细信息中看到它们。我做错了什么以及如何让它工作?

原来是饼干内容的问题。我正在使用Circle的.asJson.noSpaces将case类转换为字符串并将其写入cookie的值。但是由于某种原因,值中包含 json 的 cookie 不起作用。

最新更新