2

私はプレイを経験してきました!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;
    }
}

これは問題ない回避策ですが、それでも静的インジェクションに依存しています :(

4

2 に答える 2

0

Play Framework はそのままでは提供しませんDependency Injection。ただし、Guice または Spring と統合できます。怠惰な開発者としてSingleton、サービスの を作成したり、プラグインにすることもできます (アプリケーションの起動時に作業を準備する必要があるため)。次に、プラグインへの参照を取得できます -- Play.application().plugin(AuthPlugin.class).

この特定のケースでは、検証メソッドでデータベース検索を実行できます。

User u = User.find.where().eq("username", username).eq("password`,password).findUnique();
if (u == null)
 return "Error.";
else
 return null;

つまり、これは Play Framework についてではなく、Java プログラミング全般についてです。

于 2013-01-23T17:16:01.333 に答える
0

Springを使用すると仮定すると、他の Java プログラムと同じように実行できます。

@Configurable
public class MyModel {
    @Autowired
    transient MyService myService;

    public String validate() { ... }
}

@Configurable注釈により、クラスは依存性注入が可能になります。一時修飾子は、フィールドがデータベースに保存するフィールドとして取得されないようにします。

私のプロジェクトの 1 つで、Spring は Play 2.0/2.1 で問題なく動作します。モデル オブジェクトでの依存性注入が美的に好ましいとは考えていませんが、必要な場合は使用できます。

于 2013-01-24T13:28:36.323 に答える