2010-12-06 6 views
0

J'ai une page d'accueil gwt entière, il a un bouton de connexion (rpc).gwt appengine - retour service utilisateur page

Ceci est la mise en œuvre de services (comme l'exemple):

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; 

je laisse la méthode doGet vide. Ensuite, lorsque je me connecte/déconnecte, il me redirige vers une page vierge (à myApp/myServlet), mais je veux revenir à la page que j'étais (ma maison gwt ou ailleurs).

Répondre

0

Point A: méthode request.getRequestURI();. Cette méthode renvoie toujours l'URL du servlet où la demande en cours est en cours de traitement.

Point B: Dans userService.createLoginURL(thisURL), le thisURL est en fait l'URL vers laquelle l'utilisateur doit être redirigé après une connexion réussie. Dans ce cas, thisURL pointe vers votre chemin de servlet actuel et non vers l'utilisateur (voir point A)

Autrement dit, si votre page vers laquelle vous souhaitez rediriger l'utilisateur après une connexion réussie est www.yourapp.com/home, Ce que vous avez réellement besoin de faire est quelque chose comme ceci:

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; 

^Notez la valeur en cours pour thisURL.

+0

Salut, merci pour votre réponse, j'ai fait quelque chose comme ça pendant ce temps, mais le problème est que je dois retourner à la page j'étais, je veux dire si je suis en page1 un moyen de faire cela ?? – david

+0

Je vois. Alors pouvez-vous alors passer votre URL de page actuelle (disons foo.com/page1.html) en tant que paramètre au servlet qui crée le message de déconnexion et retourne à l'utilisateur? – Amey