2010-12-06 10 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();メソッド。このメソッドは、現在のリクエストが処理されているサーブレットのURLを常に返します。

ポイントB:userService.createLoginURL(thisURL)では、thisURLは実際には、ログインに成功した後にユーザーをリダイレクトする必要があるURLです。あなたのケースでは、thisURLは現在のサーブレットのパスを指し、ユーザーのリダイレクト先は指しません(ポイント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

こんにちは、あなたの答えは、私はその間に似たようなことをしましたが、問題は私がページに戻ってくる必要があるということです、私はpage1にいる場合私はログイン後にそこに戻る必要がありますこれを作る方法? – david

+0

私は参照してください。では、現在のページURL(foo.com/page1.html)をパラメータとして渡して、ログアウトメッセージを作成するサーブレットに戻すことができますか? – Amey

関連する問題