サンプル プロジェクトの ZenTask に実装されているセキュリティ ソリューションのバリアントを使用しています。
目標は結合することですが、withAuth
方法Action(parse.json)
がわかりません。
私のセキュリティ特性
def withAuth(f: => Int => Request[AnyContent] => Result) = {
Security.Authenticated(userid, onUnauthorized) { userid =>
Action(request => f(userid.toInt)(request))
}
}
通常のように、ボディパーサーに組み込まれた演劇を使用したい:
def newReport() = Action(parse.json) { request =>
私のコントローラーで本体をjsonに手動で解析する代わりに。
def newReport() = withAuth { userId =>
{ request =>
request.body.asJson match {
case Some(json) =>
json.validate[Report](Reports.readsWithoutUser).map {
case _: Report =>
Reports.newReport(_)
Ok("")
}.recoverTotal {
e =>
val errors = JsError.toFlatJson(e)
Logger.error(errors.toString)
BadRequest("Detected error:" + errors)
}
case None => BadRequest("Json object missing from request")
}
}