鉴于以下的
EssentialAction
...object MyController extends Controller {
...
def HasToken(action: Token => EssentialAction) = EssentialAction { request =>
...
// this doesn't compile
val body = request.body match {
case json: JsValue => json.toString
case _ => ""
}
// calculate hash with body content here
...
}
// here is an authenticated action
def getUser(userId: Strign) = HasToken { token =>
Action(parse.json) { request =>
request.body.validate[User] match {
...
}
}
}
}
如何在不解析请求的情况下获取请求正文内容?
我不想也不需要在HasToken
中解析请求正文,因为请求正文将在getUser
操作中被解析。 我只需要请求正文的原始内容来计算哈希值。
HasToken
中的代码无法编译,因为request
是RequestHeader
类型,而我需要一个定义了body
的Request
。
HasToken
验证请求头是否具有有效的 JSON Web Token... 并使用哈希验证请求未被篡改。无论如何,这些细节对我的问题毫无用处。我只是想知道如何获取请求的原始内容(我需要它来计算哈希值,该哈希值必须与令牌中包含的哈希值相对应)。 - j3d