gpt4 book ai didi

spray - 为什么 authentication 指令会导致 "Error: type mismatch"?

转载 作者:行者123 更新时间:2023-12-04 22:31:14 26 4
gpt4 key购买 nike

我在我的喷雾项目中遇到了这个错误。

Error:(41, 28) type mismatch;
found : spray.routing.authentication.ContextAuthenticator[co.s4n.authentication.entities.Usuario]
(which expands to) spray.routing.RequestContext => scala.concurrent.Future[scala.util.Either[spray.routing.Rejection,co.s4n.authentication.entities.Usuario]]
required: spray.routing.directives.AuthMagnet[?]
authenticate(validateToken) {
^

这是我的 TokenValidator 特性
trait TokenValidator {

def validateToken: ContextAuthenticator[Usuario] = {
ctx =>
val header = ctx.request.headers.find(_.name == "Access_Token")
if (header isDefined) {
doAuth(header.get)
}
else {
Future(Left(AuthenticationFailedRejection(AuthenticationFailedRejection.CredentialsMissing, List())))
}
}

def doAuth(header: HttpHeader): Future[Authentication[Usuario]] = {
Dao.validateToken(header.value).map {
case Some(usuario) => Right(usuario)
case None => Left(AuthenticationFailedRejection(AuthenticationFailedRejection.CredentialsRejected, List()))
}
}


}

这是我收到错误的那一行
//@DELETE
//localhost:9090/authenticacion/users/{{userEmail}}
val `users/{{email}}` =
pathPrefix(`path-prefix`) {
pathPrefix(`users-path-prefix` / Segment) {
emailRef => {
delete {
authenticate(validateToken) { **HERE!!!!**
usuario =>
.....
}
}
}
}
}

有谁知道我做错了什么?

提前谢谢大家!

最佳答案

我唯一缺少的是在范围内有 ExecutionContext 并且 import ExecutionContext.Implicits.global 工作正常。

这是为了让 Future s 工作,因为它们声明了一个隐式 ExecutionContext 参数。

关于spray - 为什么 authentication 指令会导致 "Error: type mismatch"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com