2

googleに1人のユーザーに対して1つのセッションのみを作成させることは可能ですか?

私はGAEでサービスを作成しました。これは、GoogleIDを使用してユーザーを認証します。これで、1人のユーザーがユーザー名/パスワードを共有して複数のPCから複数のセッションを作成します。これを制限したい。

ログインに成功した後、簡単な言語で、アプリケーションはこのユーザーの他のすべてのセッションからサインアウトする必要があります。

Gmailでは、ページの下部に最後のアクティビティの詳細という名前のリンクがあります。詳細をクリックすると、現在のセッションが表示され、他のセッションからログアウトするオプションも表示されます。プログラムで同じ機能が必要です。

もう1つのオプションがあります。ログインする前に、ユーザーがすでにログオンしているかどうかを検出しますか?

これを見てください

http://mail.google.com/support/bin/answer.py?ctx=%67mail&answer=45938

同時セッションを参照してください

この情報になんとかアクセスできれば、適切な行動を取ることができます。

4

2 に答える 2

3

それは確かに可能です。

認証に Google アカウントを使用している場合、ユーザーは資格情報を Google に送信してログインし、Google はサイトに認証トークンを返します。これは、ユーザーのブラウザに Cookie として保存されます。トークンは、Cookie の有効期限が切れるまで (デフォルトでは 24 時間)、またはユーザーがログアウトするまで有効です。

複数のログイン セッションを追跡する場合は、ログインまたはログアウト後に実行するように設計されたハンドラーを作成できます。通常のログイン後の戻り URL が「/do_stuff」の場合、これを「/finish_login?next=%2Fdo_stuff」に変更できます。そのハンドラでは、Google アカウント、ログインした IP アドレス、およびログイン タイムスタンプ (現在のタイムスタンプ) への参照を使用して、セッションを表すデータストアにエンティティを作成できます。セッション エンティティ キーを、ユーザーのブラウザの別の Cookie に書き込むことができます。完了したら、「次の」URL にリダイレクトします。

ログアウト後、セッション エンティティ キー Cookie をチェックし、エンティティを削除し、Cookie を削除する同様のハンドラを使用できます。

複数の場所からログインしていることをユーザーに示したい場合は、24 時間以内 (または Cookie の有効期限が設定されているもの) の Google アカウントに関連付けられているセッション エンティティをクエリします。

別のセッションをリモートでログアウトする場合は、Google が webapp.util で提供する login_required デコレーターの独自のバージョンを作成する必要がある場合があります。あなたのバージョンでは、ユーザーがログインしていることを確認し、セッション キー Cookie を送信したことを確認し、関連付けられたエンティティがまだ存在し、正しいアカウントによって所有されていることを確認する必要があります。

于 2010-06-02T15:39:18.513 に答える
2

ログインの詳細を Google App Engine Data サービスに保存することを妨げるものは何もありません。結果として、ユーザーのすべてのログイン詳細を関連オブジェクトに保存できます。結果として、GAE と従来の Web アプリケーションの間に違いはないと思います。ただし、ログイン情報を Web フロントエンドに処理させるのではなく、データベースに保存する点が異なります。

于 2010-06-02T12:35:01.243 に答える