Java 用户服务在注销后检索到错误的用户

Java 用户服务在注销后检索到错误的用户,java,google-app-engine,authentication,Java,Google App Engine,Authentication,我从UserService获取CurrentUser UserServiceFactory.getUserService().getCurrentUser().getEmail() 它在任何时候都有效。但当我注销时,UserService仍然返回相同的电子邮件。这会回答所有问题。看起来,虽然您可能已经注销了谷歌服务,但您的浏览器仍在为谷歌服务维护cookie。这就是为什么它再次抛出相同的用户电子邮件 这回答了所有问题。看起来,虽然您可能已经注销了谷歌服务,但您的浏览器仍在为谷歌服务维护coo

我从UserService获取CurrentUser

 UserServiceFactory.getUserService().getCurrentUser().getEmail()

它在任何时候都有效。但当我注销时,UserService仍然返回相同的电子邮件。

这会回答所有问题。看起来,虽然您可能已经注销了谷歌服务,但您的浏览器仍在为谷歌服务维护cookie。这就是为什么它再次抛出相同的用户电子邮件

这回答了所有问题。看起来,虽然您可能已经注销了谷歌服务,但您的浏览器仍在为谷歌服务维护cookie。这就是为什么它再次抛出相同的用户电子邮件

假设您是通过GAE的常规方式登录的,那么您的浏览器将以两个会话cookie结束—一个用于谷歌,另一个用于应用程序

如果您也通过常规方式注销(从
create\u logout\u URL
中的注销URL),则两个cookie都将被删除

但是,如果用户从你的应用程序浏览到其他谷歌服务并从那里注销谷歌,那么你的应用程序的cookie不会被删除(至少在Firefox中我不会)。我甚至不确定它是否可以——一旦浏览器离开你的应用程序,很可能它将不允许谷歌网站以任何方式接触你的应用程序的cookie


修复方法应该是在你的应用程序中提供一个注销链接,并让用户使用该链接注销。如果你已经这样做了,那么我不知道问题出在哪里…

假设你是通过GAE的常规方式登录的,那么你的浏览器将以两个会话cookie结束-一个用于谷歌,一个用于应用程序

如果您也通过常规方式注销(从
create\u logout\u URL
中的注销URL),则两个cookie都将被删除

但是,如果用户从你的应用程序浏览到其他谷歌服务并从那里注销谷歌,那么你的应用程序的cookie不会被删除(至少在Firefox中我不会)。我甚至不确定它是否可以——一旦浏览器离开你的应用程序,很可能它将不允许谷歌网站以任何方式接触你的应用程序的cookie


修复方法应该是在你的应用程序中提供一个注销链接,并让用户使用该链接注销。如果您已经这样做了,那么我不知道问题出在哪里…

这是在部署的应用程序上还是在本地?您是否使用Google帐户登录(或联合登录)?确保您已完全从谷歌注销,例如转到gmail或其他谷歌服务,并确保您未登录。@planetjones,我将其部署在GAE上,并确保从谷歌注销。我使用特定域(不是gmail.com)的谷歌帐户。只需清除浏览器cookie并重试。是的,我只能支持@Abdul Kader所说的内容-我在GAE及其身份验证方面有一些奇怪的行为,清除所有cookie并关闭浏览器,然后重新打开it@Abdul卡德尔,@planetjones与清理cookies一起运行良好。这是在部署的应用程序上还是本地?您是否使用Google帐户登录(或联合登录)?确保您已完全从谷歌注销,例如转到gmail或其他谷歌服务,并确保您未登录。@planetjones,我将其部署在GAE上,并确保从谷歌注销。我使用特定域(不是gmail.com)的谷歌帐户。只需清除浏览器cookie并重试。是的,我只能支持@Abdul Kader所说的内容-我在GAE及其身份验证方面有一些奇怪的行为,清除所有cookie并关闭浏览器,然后重新打开it@AbdulKader,@planetjones和清洁饼干很好用谢谢,但是我怎么能修好呢?谢谢,但是我怎么能修好呢?谢谢。我曾经通过在上重定向来注销用户。事实上,我不想像你所描述的那样与谷歌同步登录会话。我想我可以通过每个请求删除一些cookies来实现这一点,但我希望还有其他方便的方法。谢谢。我曾经通过在上重定向来注销用户。事实上,我不想像你所描述的那样与谷歌同步登录会话。我想我可以通过每个请求删除一些cookies来实现这一点,但我希望还有其他方便的方法。