1

私のアプリケーションは、Spring セキュリティと一緒に Google OAuth2 を使用しています。サンプル実装はこちらです。

問題は >>複数のユーザーが Chrome ブラウザにサインインしています。ユーザーは、通常の Google ユーザーでも Google Apps ドメイン ユーザーでもかまいません。アプリケーションがhttps://appengine.google.com/_ah/loginform?state=####にリダイレクトされる理由がわかりません 。

最初のユーザー選択ページ 提供されたオプションからユーザーを選択すると、UserService インターフェイスは選択したユーザーの資格情報を取得します。しかし、この後もアカウント選択ページが表示されます。

ここに画像の説明を入力

私のアプリケーションでは、UserService の createLoginURL() を使用して、ユーザーをログイン ページにリダイレクトしました。また、アカウント選択ページから別のユーザーを選択すると、2 番目にプロンプ​​トが表示され、UserService は最初のページから選択されたユーザーの資格情報を保持します。

ここで立ち往生している問題は、選択したユーザーに応じて UserService を更新する方法です。また、ユーザーが Google のページ (検索、ドライブ、メールなど) から 2 番目のアカウントに切り替えた場合、変更されたユーザーの資格情報で UserService を再インスタンス化するにはどうすればよいですか。リクエストヘッダーの「authUser」または「session_state」またはその他の値を使用して、ユーザーの変更によりアプリケーションでイベントをトリガーする方法はありますか? 私は、Google App Engine のセッションがデータストア エンティティ '_ah_SESSION' を使用して維持されていることを認識しており、有効期限が切れたものを削除するための cron も用意しています。ブラウザで Google にログインしているユーザーが 1 人だけの場合、すべてが正常に機能します。

つまり、UserService インターフェイスを使用して複数のユーザーのサインインの詳細を維持する方法は?

4

1 に答える 1

0

アプリにログインしているユーザーが、gmail やドライブなどの Google サービスの別のタブでサインインしてアクティブになっているユーザーとは無関係であることに気付いた場合、これは説明したように、アプリのセッション Cookie、および gmail、ドライブなどのタブからの「シグナル」で更新されないという事実。ユーザー サービスを使用して App Engine で複数のサインインを管理したい場合は、このパブリック イシュー トラッカー機能リクエストにスターを付けて poke する必要があります。

于 2015-10-19T17:29:08.753 に答える