将登录信息从Apache/PHP传递到Tomcat/GWT


Pass login information from Apache/PHP to Tomcat/GWT

我们计划部署我们的GWT模块http://code.google.com/webtoolkit/doc/1.6/DevGuideServerCommunication.html#DevGuideRPCDeployment在"使用Tomcat与Apache HTTPD和代理"一节中

基本上,我们配置Apache/PHP服务器将请求传递给匹配URL部分的Tomcat/GWT服务器。果然奏效了。现在我们要将当前登录用户的信息从Apache/PHP传递到GWT模块。

我最初的想法是从PHP页面加载GWT模块(通过包含它的nocache.js),并包含GWT模块可以读取的登录令牌。但是我不确定读取DOM值并将其视为登录令牌是否安全。

有什么最好的办法吗?谢谢你。

依我之见,使用从apache/php传递到gwt项目的登录令牌无疑是最好的主意。要传递这个令牌,有三种可能:

第一个:您可以使用cookie传递令牌。将令牌写入cookie并在gwt上下文中再次读取:

import com.google.gwt.user.client.Cookies;
Collection<String> cookies = Cookies.getCookieNames();

在GWT- showcase中可以找到一个处理GWT cookie的示例。

第二个:您可以使用HTTP GET传递它,而不是将令牌写入cookie,并在gwt上下文中再次读取它:

// returns whole query string 
public static String getQueryString() {
    return Window.Location.getQueryString();
}
// returns specific parameter
public static String getQueryString(String name) {   
    return Window.Location.getParameter(name);
}

这个方法是-恕我直言-你永远不应该选择的!

第三个:除了HTTP GET,你还可以使用HTTP POST。将HTTP POST发送到服务器。因此,您必须使用一个简单的servlet在服务器端处理请求。这可以作为单例实现,因此可以从gwt -server-上下文中读取。这种方法有点复杂,而且需要做很多工作,因为您必须将信息传回GWT-client-context。

哪个版本最适合你,取决于你项目的细节。通常我会说,Cookie-Version是最好的。