我的应用程序使用Google OAuth2和Spring安全性。示例实现是here。
问题是>> 我在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界面维护多个用户登录详细信息?
答案 0 :(得分:0)
如果您发现哪个用户登录到您的应用程序与哪个用户登录并且在另一个用于gmail或驱动器等Google服务的标签页中处于活动状态无关,正如您所解释的那样,这是由于在您的应用程序上存储会话cookie,以及它们没有更新来自gmail,驱动器等选项卡的任何“信号”。如果您想使用用户服务在App Engine上管理多个登录,则应该为明星和戳this public issue tracker feature request加注星标。