2010-12-06 5 views
0

전체 홈페이지가 있습니다. 로그인 버튼 (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)로 리디렉션되지만 사용자는 이전 페이지 (내 집 또는 다른 위치)로 돌아가고 싶습니다.

답변

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

안녕하세요, 귀하의 답변에 대한 thx, 그 사이에 뭔가를 한 것이지만 문제는 제가 페이지에 돌아갈 필요가 있다는 것입니다, 만약 내가 page1에 있다면 나는 로그인 후에 다시 거기에 있어야합니다. 이걸 만드는 방법 ?? – david

+0

나는 본다. 그렇다면 현재 페이지 URL (foo.com/page1.html)을 매개 변수로 전달하여 로그 아웃 메시지를 작성한 서블릿에 반환 할 수 있습니까? – Amey