我正在尝试创建一个身份验证的布置对象,而我正在努力如何提供" defaultbodyparser"字段。
object Authenticated extends AuthenticatedBuilder[User](
_.headers.get("test").flatMap(auth)
)
抱怨:"未指定的值参数:DefaultBodyParser:BodyParser [AnyContent]"
显然您需要提供此字段,但目前尚不清楚从哪里获得。我知道游戏已经有BodyParsers(JSON,XML等(,所以...我如何在这里提供它们?
事实证明,答案是在Scaladocs本身中。不要使用对象,而是使用这样的类:
class UserAuthenticatedBuilder(parser: BodyParser[AnyContent])(implicit ec: ExecutionContext)
extends AuthenticatedBuilder[User]({ req:RequestHeader =>
req.headers.get("mytoken").flatMap(authCheck)},
parser
) {
@Inject()
def this(parser: BodyParsers.Default)(implicit ec: ExecutionContext) = {
this(parser: BodyParser[AnyContent])
}
}
您可以看到解析器使用Play的DI注入了类。