2010-12-06 37 views
0

我有一個完整的GWT主頁,它有一個登錄按鈕(rpc)。gwt appengine - 用戶服務返回頁面

這是服務實現(就像例子):

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 home或無論我身在何處)。

回答

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設置的值。

+0

嗨,thx爲您的答案,我做了這樣的同時,但問題是,我需要返回到頁面我是,我的意思是如果我在page1我需要回到那裏後登錄,是否有一種方法來做到這一點? – david 2010-12-15 18:09:38

相關問題