0

ユーザーをログインに送信する前にセッションをチェックしたい - これにより、各 URL リクエストは、これが有効なセッションからのものであるかどうかをチェックします - そうでない場合はログインページに送信し、そうでない場合は通常どおり処理します。ユーザーがすでにアクティブなセッションを持っている場合、ログイン ページは表示されず、事前定義されたメイン ページが表示されます。

それに関連してGoogleで検索したところ@Before、コントローラーで注釈を使用することで行われることがわかりましたが、@Before動作と使用方法についてはわかりませんか? 私はプレイ1.2.5を使用しています。

4

2 に答える 2

4

この方法で @Before を使用できます。

@Before
static void addUser() {
    User user = connected();
    if(user != null) {
        renderArgs.put("user", user);
    }
}

static User connected() {
    if(renderArgs.get("user") != null) {
        return renderArgs.get("user", User.class);
    }
    // Find your user from session
    String username = session.get("user");
    if(username != null) {
        return User.find("byUsername", username).first();
    } 
    return null;
}

// ~~render your login if the user is not finded in session

public static void index() {
    if(connected() != null) {
         render();
    }
    login();
}

このサンプル コードは、YOUR_PLAY_DIR/samples-and-tests/booking にあります。

@emt14 が言ったように、Play セキュア モジュールを使用すると、より簡単にこれを行うことができます。YOUR_PLAY_DIR/samples-and-tests/forum でフォーラム アプリのサンプルを確認してください。

于 2012-11-07T16:37:50.303 に答える
2

Play セキュア モジュールは、まさにそれをすぐに実行できます。ほとんどのアプリケーションで使用され、さまざまなプラグインとも統合されます。こちらのドキュメントをご覧ください。

それでも自分で実装したい場合は、セキュア コードを例として使用できます。

それ以外の場合、@Beforeは任意のコントローラー静的メソッドで使用でき、セッションを含むすべてのスコープ オブジェクトにアクセスできます。

于 2012-11-05T08:28:16.043 に答える