【发布时间】:2015-10-09 14:00:20
【问题描述】:
我目前有一个指令用于保护 Akka HTTP 应用程序中的资源,如下所示:
def authenticate: Directive1[Login] =
optionalHeaderValueByName("Authorization") flatMap {
val accessToken = authz.split(' ').last
case Some(authz) =>
LoggedInUser findByAccessToken accessToken match {
case Some(user) => provide(user)
case None => reject(AuthorizationFailedRejection)
}
case None => reject(AuthorizationFailedRejection)
}
LoggedInUser.findByAccessToken() 对数据库进行阻塞查询,我想将此异步 ask 切换为可以提供相同数据的参与者,我可以将 ActorRef 传递为指令的参数,但我不知道如何处理请求返回的Future。
Akka HTTP 附带的 Directive1 示例似乎都没有这样做(至少我找不到),尽管有返回 Route 的指令示例。
我想做的事是否可能?是否有一种可能的方法来创建带有用户凭据字段的StandardRoute 子类并以某种方式返回?
【问题讨论】: