【问题标题】:Expression of type Iteratee[Array[Byte], StatusHeader] doesn't conform to expected type Accumulater[Byte,Result] in Play scala?Iteratee[Array[Byte], StatusHeader] 类型的表达式不符合 Play scala 中的预期类型 Accumulator[Byte,Result]?
【发布时间】:2017-08-22 22:35:09
【问题描述】:
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()) 中收到错误消息。

【问题讨论】:

    标签: scala playframework casting type-conversion


    【解决方案1】:

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

    Accumulator.done(Results.forbidden())
    

    cfdocumentation

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      相关资源
      最近更新 更多