play(scala) - authenticatedBuilder .. DefaultBodyParser ..在



我正在尝试创建一个身份验证的布置对象,而我正在努力如何提供" 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注入了类。

相关内容

  • 没有找到相关文章

最新更新