Iteratee类型[Array [Byte],StatusHeader]的表达式是否与Play scala中的预期类型Accumulater [Byte,Result]一致?

时间:2017-03-29 12:27:28

标签: scala playframework casting type-conversion

class AuthorizedFilter extends EssentialFilter  {

  private def authorizationRequired(request: RequestHeader) = {
    val clientId = request.headers.get("clientId");
    val id = "74f6df0452";  //to match with clientID.Block remaining request
    clientId match {
      case Some(id) =>
        true;
      case _ =>
        false;
    }

  }

  def apply(next: EssentialAction):EssentialAction = new EssentialAction {
     def apply(request: RequestHeader)  = {
      println("result...",request.headers.get("clientId"));

      if(!authorizationRequired(request)) {
        *Iteratee.ignore[Array[Byte]].map(_ => Results.forbidden())*
      }
      else {
        println("YOU are authorized!!")
        next(request)
      }
      }
  }
}

添加了上述过滤器以阻止clientID不匹配的所有请求。我在 Iteratee.ignore [Array [Byte]]。map(_ => Results.forbidden())中收到错误消息。

1 个答案:

答案 0 :(得分:2)

问题是您从旧版本的play框架中获取了一段代码,而您现在使用的是版本> = 2.5。您需要将行Iteratee...替换为:

Accumulator.done(Results.forbidden())

cf documentation