scala - 如何将 request.body 转换为字节数组以计算 MD5?

标签 scala playframework

我正在 Play 中创建一个 Scala 函数!验证对我的网络服务的请求的应用程序。身份验证基本上是 HMAC 身份验证。该方法接收要使用的 bodyParser 的类型。由于我不知道 -bodyParser 的类型,我如何将 request.body 转换为我可以在其上运行 MD5 处理的通用 Array[Byte]?

def Authenticated[T](authType : AuthenticationType, bodyParser : BodyParser[T])(f : (Request[T]) => Result) = {

    Action(bodyParser) { request => 

      // Authentication logic starts here

      // TODO: Something like: var bodyData : Array[Byte] = request.body.toByteArray()

      // The rest is easy...
      var contentMD5 = calculateMD5(bodyDat)
      f(request)
    }
}

最佳答案

Play 收到的任何请求主体都可以解析为 Http.RawBuffer它可以给出请求主体的纯原始字节数组表示。

您要查找的代码行是

var bodyData : Array[Byte] = request.body.asRaw.asBytes()

关于scala - 如何将 request.body 转换为字节数组以计算 MD5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11622543/

相关文章:

scala - 如何在Scala类中初始化函数类型参数?

postgresql - Anorm 返回 0 个结果,而 psql 返回 2 个结果

logging - 玩!框架日志记录功能

java - Twilio 接收短信/无数据发布(java 中的 Play Framework )

java - Play Framework 无法读取数据库配置并注入(inject) JPAApi

scala - 如何在Scala中导入不依赖路径的内部类?

scala - Akka 匿名 Actor 可以访问 self 吗?

rest - scalatra 在幕后使用抑扬符吗?

java - Play 2.5 对某些请求禁用 csrf 保护

jquery - 如何在 jquery ajax 中处理 Play 框架 Controller 发送的重定向?