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