6

Cookieを介してユーザーを管理しようとしています。このトピックに関するドキュメントがまったくないため、それほど簡単ではありません。

サンプル「zentask」の助けを借りて、私はこれを作成しました:

session("username", filledForm.field("username").value());

public class Secured{

    public static Session getSession() {
        return Context.current().session();
    }

    public static String getUsername() {
        return getSession().get("username");
    }

    public static boolean isAuthorized() throws Exception {
        String username = getUsername();
        if (username == null)
            return false;
        long userCount = DatabaseConnect.getInstance().getDatastore()
                .createQuery(User.class).field("username").equal(username)
                .countAll();

        if (userCount == 1)
            return true;

        return false;

    }

私はそれを次のように使用しています:

public static Result blank() throws Exception {

        if (Secured.isAuthorized())
            return ok(Secured.getUsername());
        else
            return ok(views.html.login.form.render(loginForm));

    }

今、私はいくつかの質問/問題があります:

  • 1.)Cookieはデタイプされておらず、常に同じように見えます。例:bdb7f592f9d54837995f816498c0474031d44c1a-username%3Akantaki

  • 2.)クラスSecurity.Authenticatorは何をしますか?

  • 3.)Cookieによるユーザー管理は非常に一般的な問題だと思いますが、play!2.0は完全な解決策を提供してくれますか?または、少なくともいくつかのドキュメントがありますか?

4

2 に答える 2

12

Zentaskサンプルに示されているように、クラスSecuredはを拡張する必要がありますSecurity.Authenticator

これにより@Security.Authenticated、コントローラーまたはアクションのいずれかに注釈を付けることができます。このアノテーションにより、ユーザーが適切に許可されていない場合(Security.Authenticator.onUnauthorized()メソッドをオーバーライドすることにより)、クライアントを別のページにリダイレクトできます。

ワークフローは次のとおりです。

  1. 承認を確認してください
  2. クライアントCookieに一意の識別子を追加します
  3. 認証されているかどうかを確認する
  4. コントローラまたはアクションを保護する
  5. 許可されていない場合は、クライアントを別のページにリダイレクトします
于 2012-08-05T12:50:35.787 に答える
12

authenticationおよびのフルスタックもありますauthorization-JoschaFethによるPlayAuthenticate。(GitHubで入手可能)

+完全なDeadbolt2(Steve Chalonerによる)サポートの概念を使用するJava用のすぐに使用できるサンプルが組み込まれています。それは持っています:securesocial

  • 電子メール、Google、Facebook、Foursquare、Twitter、OpenId、およびカスタムプロバイダーregisterを使用する可能性が組み込まれています。log in
  • 多言語サポート(現在:英語、ドイツ語、ポーランド語)
  • カスタマイズ可能なテンプレート(情報メール用)
  • rolesおよびのサポート( Deadbolt 2permissions経由)
  • パスワード回復のサポート

その中にJava用のサンプルアプリがあります。あなたはそれをあなたのアプリに組み込むことができます。

于 2012-08-05T13:32:28.607 に答える