我正在使用 cookie 和基本身份验证的组合。在基本认证中,它需要一个函数
Option[UserPass] => Future[Option[T]]
并返回一个Directive[T]
.
我希望在 cookie 上创建一个指令,它需要一个函数
HttpCookie => Future[T]
并返回一个Directive[T]
.
因此我可以做一个组合的 auth 指令cookieAuth | basicAuth
。
我能得到的最接近的是:
def myFunction:HttpCookie => Future[String]
val cookieAuth:Directive[String] = cookie("MyCookie").flatMap { cookie =>
onSuccess(myFunction(cookie))
}
但签名不匹配。我得到了例外:
type mismatch;
found : spray.routing.Directive[shapeless.::[String,shapeless.HNil]]
required: spray.routing.Directive[String]
^