Google app engine gwt appengine-用户服务返回页
我有一个完整的gwt主页,它有一个登录按钮(rpc) 这是服务实现(与示例一样):Google app engine gwt appengine-用户服务返回页,google-app-engine,gwt,service,Google App Engine,Gwt,Service,我有一个完整的gwt主页,它有一个登录按钮(rpc) 这是服务实现(与示例一样): UserService UserService=UserServiceFactory.getUserService(); HttpServletRequest=this.getThreadLocalRequest(); 字符串消息=”; 字符串thisURL=request.getRequestURI(); Principal=request.getUserPrincipal(); if(principal==n
UserService UserService=UserServiceFactory.getUserService();
HttpServletRequest=this.getThreadLocalRequest();
字符串消息=”;
字符串thisURL=request.getRequestURI();
Principal=request.getUserPrincipal();
if(principal==null){
message=“请。”;
}
否则{
message=“Hola”+principal.getName()+”.Puedes.”;
}
返回消息;
我让doGet方法为空
然后,当我登录/注销时,它会将我重定向到一个空白页面(到myApp/myServlet),但我想返回到我所在的页面(我的gwt主页或我所在的任何地方)。点a:
request.getRequestURI()代码>方法。此方法将始终返回处理当前请求的servlet的URL
B点:在userService.createLoginURL(thisURL)
中,thisURL
实际上是用户成功登录后应重定向到的URL。在您的情况下,此URL指向您当前的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;
UserService UserService=UserServiceFactory.getUserService();
HttpServletRequest=this.getThreadLocalRequest();
字符串消息=”;
字符串thisURL=”http://www.yourapp.com/home";
Principal=request.getUserPrincipal();
if(principal==null){
message=“请。”;
}
否则{
message=“Hola”+principal.getName()+”.Puedes.”;
}
返回消息;
^请注意为该URL设置的值。您好,谢谢您的回答,我同时做了类似的操作,但问题是我需要返回到以前的页面,我的意思是,如果我在第1页,我需要在登录后返回,有没有办法做到这一点?我明白了。那么,您是否可以将当前页面url(比如foo.com/page1.html)作为参数传递给servlet,该servlet创建注销消息并返回给用户?
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;