使用FormUrlEncoded正文验证请求

时间:2019-09-04 21:08:52

标签: scala playframework

我有一种情况,我想验证每个请求都具有有效的标头属性。此属性是一个数字签名,本质上是请求url和请求正文的哈希,在这种情况下为表单url编码的正文。

所以我做了典型的事情,并创建了一个动作过滤器,如下所示:

class SomeActionFilter @Inject()(val executionContext: ExecutionContext) extends ActionFilter[Request] {

  override protected def filter[A](request: Request[A]): Future[Option[Result]] = Future.successful {
    // here I want to get the request body which I know is a form url encoded request body
    val body = request.body //problem here is that body is of type A

  }

}

我真正想要的是使request.body成为Option [Map [String,Seq [String]]]]类型,这是一种形式url编码的正文。我可以做到这一点,即像这样用AnyContent交换类型参数A,然后我就可以得到一个request.body.asFormUrlEncoded

class SomeActionFilter @Inject()(val executionContext: ExecutionContext) extends ActionFilter[Request] {

  override protected def filter[AnyContent](request: Request[AnyContent]): Future[Option[Result]] = Future.successful {
encoded request body
    val body = request.body.asFormUrlEncoded

  }

}

在这里要做这样的事情来交换类型参数是否正确?还是我使用asInstanceOf检查主体是否为Option [Map [String,Seq [String]]]类型,如果不是,则拒绝请求?我对如何解决这个问题感到迷茫。

0 个答案:

没有答案