我的应用程序使用 Google OAuth2 和 Spring 安全性。示例实现在这里。
问题是>>我有多个用户在我的 chrome 浏览器中登录。用户也可以是普通的 Google 用户或 Google Apps 域用户。我不明白为什么我的应用程序重定向到 https://appengine.google.com/_ah/loginform?state=####。
从提供的选项中选择用户后,UserService 界面将获取所选用户的凭据。但在此之后再次提示我使用帐户选择器页面。
在我的应用程序中,我使用了 UserService 的 createLoginURL() 将用户重定向到登录页面。此外,如果我从帐户选择器页面选择不同的用户,第二个提示的用户,UserService 仍然保留从第一页选择的用户的凭据。
我在这里遇到的问题是如何根据所选用户更新我的 UserService 。此外,如果用户从 Google 页面(搜索、驱动器、邮件等)切换到第二个帐户,我如何使用更改后的用户凭据重新实例化 UserService。由于用户更改,有什么方法可以使用请求标头的“authUser”或“session_state”或任何其他值来触发应用程序中的事件。我知道 Google App Engine 上的会话是使用数据存储实体“_ah_SESSION”维护的,并且我有一个 cron 来删除过期的会话。如果浏览器只有一个用户登录 Google,一切正常。
简而言之,如何使用 UserService 接口维护多个用户登录详情?