1
Я пытаюсь составить базовую аутентификацию с каким-либо другим действием:Асинхронный версия AuthenticatedBuilder в игре 2
def findByNameSecure(username: String) = Authenticated { _ =>
val cursor: Cursor[JsObject] = persons.
find(Json.obj("userdetails.username" -> username)).
cursor[JsObject](ReadPreference.primary)
val res = cursor.collect[List]().map { persons =>
Ok(Json.toJson(persons))
} .recover {
case _ => BadRequest(Json.parse("{'error': 'failed to read from db'}"))
}
Await.result(res, 10.seconds)
}
Маршрут:
GET /secure/user/findbyname controllers.UserController.findByNameSecure(username: String)
Это работает, как ожидалось. Меня беспокоит то, что я использовал Await.result
, который блокирует. Как я могу составить асинхронную версию такого типа аутентификации?
Я использую игру 2.4.
Почему вы не пишете простой пример кода, который каждый может скомпилировать и, возможно, работать? Вы пробовали - 'def findByNameSecure (имя пользователя: String) = Authenticated.async {_ =>' – EnverOsmanov
Извините, я не могу показать весь проект. 'Authenticated.async' работает хорошо. Благодаря! Я бы с радостью принял его, если бы вы могли написать его в качестве ответа. – qed
Ваша бизнес-логика не связана с вопросом, поэтому вы можете просто удалить ее. Пример: https://scastie.scala-lang.org/3821 Как просто вы пишете как можно больше помощи. – EnverOsmanov