2011-05-16 82 views
0

后检索错误的用户,我得到CurrentUser从UserServiceUserService注销

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

它工作时。但是当我注销时,UserService仍然返回相同的电子邮件。

+0

这是在部署的应用程序还是在本地?您是否在使用Google帐户进行登录(或联合登录)?确保您已完全从Google注销,例如去Gmail或其他谷歌服务,并确保你没有登录。 – planetjones 2011-05-16 09:43:07

+0

@planetjones,我将它部署在GAE上,并确保我从Google注销。我使用特定网域(不是gmail.com)的Google帐户。 – 2011-05-16 09:49:18

+0

只需清除浏览器cookie并尝试。 – 2011-05-16 09:53:07

回答

2

假设你通过GAE的常规手段登录,您的浏览器将结束两个会话cookie - 一个用于谷歌和一个用于应用程序。

如果您还以常规方式注销(从create_logout_url注销的URL),那么这两个cookie都将被删除。但是,如果用户从您的应用浏览到某个其他Google服务并从那里注销Google,那么您的应用的Cookie不会被删除(至少在Firefox中不适用于我)。我不确定它甚至可以 - 一旦浏览器远离您的应用程序,很可能它不会允许Google网站以任何方式触摸您的应用程序的Cookie。

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

+0

谢谢。我曾经通过在http://www.google.com/accounts/Logout上重定向来注销用户。实际上,我不想按照您的描述与Google进行登录会话同步。我想我可以通过删除一些cookie每个请求来实现这一点,但我希望有其他方便的方法。 – 2011-05-16 10:48:05

1

回答一切。看起来,虽然您可能已经注销了Google服务,但您的浏览器仍然维护着Google服务的Cookie。这就是为什么它再次抛出相同的用户电子邮件..

+0

谢谢,但我如何解决它? – 2011-05-16 10:08:20