Я хотел бы иметь возможность использовать BodyParser для аутентифицированного запроса, и у меня возникли проблемы с выяснением того, как это сделать, если моя аутентификация настроена, как в примере с ZenTasks.
Мой метод аутентификации,
def IsAuthenticated(f: => String => Request[AnyContent] => Result) = {
Security.Authenticated(username, onUnauthorized) { user =>
Action(request => f(user)(request))
}
}
def HasRole(role: List[String])
(f: => String => Request[AnyContent] => Result) = IsAuthenticated {
user => request => if (role.contains(getRole(user))) {
f(user)(request) // This function returns the result.
} else {
Results.Forbidden
}
}
Мой метод контроллера,
def controller = HasRole(List("admin")) { user => _ => {
Action(parse.temporaryFile){ implicit request =>
request.body.moveTo(new File("/tmp/filepath"))
Redirect(routes.home)
}
}
Это ошибка, которую я вижу,
[error] found : play.api.mvc.Action[play.api.libs.Files.TemporaryFile]
[error] required: play.api.mvc.Result
[error] Action(parse.temporaryFile){ implicit request =>
[error] ^
Вот связанный вопрос: parse.json аутентифицированного запроса на воспроизведение
Этот человек нашел обходной путь, и я полагаю, что он есть и для примера временного файла, но я хотел бы знать, как (или почему) то, что я делаю, не работает.