私はPlayの非同期パワーを理解するために真剣に取り組んでいますが、非同期呼び出しが適合する場所とフレームワークがその使用に対して共謀しているような場所に関しては多くの競合を発見しています。Play Framework 2.x(Scala)で非同期フォームの検証を行うことはできますか?
私が持っている例はフォームの検証に関係しています。 Playはアドホックな制約を定義することができます - ドキュメントからこれを参照してください:
val loginForm = Form(
tuple(
"email" -> email,
"password" -> text
) verifying("Invalid user name or password", fields => fields match {
case (e, p) => User.authenticate(e,p).isDefined
})
)
ニースとクリーン。しかし、私が完全に非同期のデータアクセスレイヤー(ReactiveMongoなど)を使用している場合、User.authenticate(...)
への呼び出しはFuture
を返します。したがって、フォームバインドの両方の機能をどのように利用できるかについては暗いです機能と非同期ツールが含まれます。
非同期アプローチを宣伝するのはうってつけですが、フレームワークの特定の部分があまりうまく動かないということに不満を感じています。検証を同期して行わなければならない場合は、非同期アプローチのポイントを打ち負かしているようです。私はAction
の構成を使用して同様の問題に遭遇しました。 ReactiveMongoを呼び出すセキュリティ関連のAction
があります。
私の理解が不足しているところに誰でも光を当てることはできますか?
:から抽出
?メッセージは「無効なユーザー名またはパスワード」または「現在利用できないサービス」などです。 2番目の質問は、重複した認証要求なしで、UserオブジェクトをActionで取得できますか? – Artem