gwt appengine - 用户服务返回页面

时间:2010-12-06 18:44:56

标签: google-app-engine gwt service

我有一个完整的gwt主页,它有一个登录按钮(rpc)。

这是服务实现(就像示例一样):

UserService userService = UserServiceFactory.getUserService();
        HttpServletRequest request = this.getThreadLocalRequest();
    String message = "";
    String thisURL = request.getRequestURI();

    Principal principal = request.getUserPrincipal();
    if(principal == null){
        message = "<p>Please <a href=\"" + userService.createLoginURL(thisURL) + "\">sign in</a>.</p>";
    }
    else{
        message = "Hola " + principal.getName() + ". Puedes <a href=\"" + 
                    userService.createLogoutURL(thisURL)+ "\">sign out</a>.</p>";
    }
    return message;

我让doGet方法为空。

然后,当我登录/退出时,它会将我重定向到一个空白页面(到myApp / myServlet),但我想回到我所在的页面(我的gwt家或无论我在哪里)。

1 个答案:

答案 0 :(得分:0)

A点:request.getRequestURI();方法。此方法将始终返回正在处理当前请求的servlet的URL。

B点:在userService.createLoginURL(thisURL)中,thisURL实际上是用户在成功登录后应重定向到的URL。在您的情况下,thisURL指向您当前的servlet路径,而不是您希望用户重定向到的位置(参见A点)

也就是说,如果您想在成功登录后重定向用户的页面是www.yourapp.com/home,那么您实际需要做的是这样的:

UserService userService = UserServiceFactory.getUserService();
        HttpServletRequest request = this.getThreadLocalRequest();
    String message = "";
    String thisURL = "http://www.yourapp.com/home";

    Principal principal = request.getUserPrincipal();
    if(principal == null){
        message = "<p>Please <a href=\"" + userService.createLoginURL(thisURL) + "\">sign in</a>.</p>";
    }
    else{
        message = "Hola " + principal.getName() + ". Puedes <a href=\"" + 
                    userService.createLogoutURL(thisURL)+ "\">sign out</a>.</p>";
    }
    return message;

^注意为thisURL设置的值。