2

我正在尝试在本地开发服务器上使用 App Engine 的 UserService,但它的行为不像我预期的那样。我在论坛上搜索了我的问题的答案,但找不到任何专门解决我的问题的答案。

我做的第一件事是从 UserService 获取登录 URL,如下所示:

UserService userService = UserServiceFactory.getUserService();
if(userService.isUserLoggedIn())
  String loginURL = userService.createLoginURL("/mycallbackservlet");
else
  ... do something else

假设用户最初没有登录,我提供了一个“mycallbackservlet”作为目标 URL,以便在(成功)登录后重定向到。要启动登录过程,我在客户端打开一个 GWT 窗口,如下所示:

Window.open(loginURL, "Bla", props);

loginURL 是上面创建的。我看到了本地开发服务器的模拟登录屏幕,您可以在其中输入任何用户。我只需单击确定。现在我的回调 servlet 被调用(如预期的那样)但是当我再次检索 UserService 对象时,它没有给我一个登录用户,即

UserServiceFactory.getUserService().isUserLoggedIn()

返回“假”。怎么会这样?这是典型的开发服务器行为还是我做错了什么?我是否应该以不同的方式打开初始 URL,即不使用 Window.open() 而是使用其他东西?

任何建议将不胜感激!

4

2 回答 2

0

当用户已经登录时,您似乎正在创建登录 url?不应该反过来吗:

if(!userService.isUserLoggedIn())
  String loginURL = userService.createLoginURL("/mycallbackservlet");
于 2012-10-02T17:16:52.870 回答
0

HttpServletRequest 有方法有方法

  • 获取远程用户()
  • 获取用户主体()
  • isUserInRole(字符串角色)

这在您的情况下可能很有用。

于 2012-10-02T17:21:31.947 回答