私はプレイを経験してきました!2.1 の例では、ZenTasks の例に従って基本的なログイン システムをセットアップします。私が立ち往生しているのは、JavaForms の部分です。Guice DI を介して提供される認証サービスのインスタンスを使用して、ログイン要求を検証したいと考えています。
私はPlay20 Sampleに従っています。authenticate()
この例では、フォームの送信後にフォームの検証が要求されたときに、静的メソッドを使用して認証を実行します。非静的スコープでこの検証ステップを実行する方法について何か考えはありますか?
注: Play を見てきました! プラグインと SecureSocial プラグインを認証しますが、これらのプロジェクトは、私が今やりたいことに対してやり過ぎです。また、JavaForms で非静的検証を許可するための一般的なソリューションにも興味があります。
編集: ここで私が求めていることについて混乱があるようです。私が見つけたいと思っているのは、Play によって送信されたフォーム送信の検証ステップを実行する別の方法です! フレームワーク Form.form() で生成されたフォーム。現在、DI フレームワークを介して作成されていない POJO のインスタンスで validate() メソッドを呼び出す必要があります。これにより、承認サービスなどにアクセスするために静的参照が必要になります...
編集2: 私が取り組んでいる現在のソリューションはこれです:
public static class AuthServiceFormReference {
@Inject
public static Provider<AuthService> authService;
}
// In my auth module configure()
//...
requestStaticInjection(AuthController.AuthServiceFormReference.class);
//...
public static class Login {
@Required
public String email;
@Required
public String password;
public String validate(){
if(AuthServiceFormReference.authService.get().authenticateAdmin(email, password) == null) {
return "Invalid user or password";
}
return null;
}
}
これは問題ない回避策ですが、それでも静的インジェクションに依存しています :(