13

設定:

  • テンプレート: angularjs (すべて app.yaml から静的に提供されます)
  • api: angularjs コントローラーがアプリケーションからデータをプルするために使用する json 応答

ページのコンテンツは静的ファイルから提供されるため、 users.create_login_url ()users.create_logout_url()などを使用することはできません。

ユーザーのログイン/ログアウト、ユーザーがログイン/ログアウトしたかどうか、ユーザーがこのようなアプリケーションの管理者であるかどうかを判断するには、通常どのようにしますか?

4

2 に答える 2

7

私は実際にこの問題の解決策に取り組んでいます。このプロジェクトはSaplingと呼ばれ、ユーザー管理を扱う AngularJS スターター プロジェクトです。

これは私が取ったアプローチです:

  1. ユーザーがサイトにアクセス -- html と javascript をロード

  2. Angular がロードされたら、 にGETリクエストを送信し'/api/user/me'ます。ユーザーがログインしている場合は、ユーザーの表現を返します。

    { 
      "name": "Bob",
      "admin": false,
      // ect.
    }
    

    ユーザーがログインしていない場合は、エラーが返され401ます。

  3. ユーザー オブジェクトが返された場合 -- ユーザーが管理者でもあるかどうかを確認します。を受信した場合401は、ユーザーをログイン ページにリダイレクトします (Angular アプリ内にログイン ページを作成するか、ユーザーが混乱しないと思われる場合は、Google ログインに直接送信できます)。

では、App Engine のユーザー サービスでこれを行うにはどうすればよいでしょうか。

URL 「/api/user/me」のリクエストハンドラーで

電話get_current_user()してis_current_user_admin()

  • ユーザーがログインしています -- adminbooleanを追加し、ユーザーの表現を json として返します。

  • ユーザーがログインしていません -- 401Unauthorized を返します。response.set_status(401)

ユーザーをログイン URL とログアウト URL に誘導するにはどうすればよいですか?

次の URL でリクエスト ハンドラを作成できます。

「API/ユーザー/ログイン」

webapp2.redirect(users.create_login_url())

「API/ユーザー/ログアウト」

webapp2.redirect(users.create_logout_url())

そして、ユーザーを Angular からそれらに誘導します。

基本は網羅できたと思います。詳細が必要な場合は、お知らせください。

于 2012-10-25T05:11:22.190 に答える
-2

この質問も参照してください: 静的​​コンテンツを提供するときに、GAE を使用して静的ファイルへのアクセスを制限する。

ハンドラーでは、ユーザー サービスを使用して、ログインしたユーザーと、この「ユーザー」が管理者であるかどうかを確認できます。例: https://developers.google.com/appengine/docs/python/users/overview

クライアント アプリケーションを使用する場合は、OAUTH2 の方が適しています。

于 2012-10-24T21:41:49.820 に答える