这里的想法是让我的GWT应用程序在2个不同的模块:
WebModule
(入口点),其仅包含一个登录屏幕;和AppModule
(入口点),其中包含的主要应用当用户登陆网站,在下载WebModule
到他们的浏览器,并提出了一个登录界面给他们。然后,他们必须提交用户名和密码,然后使用GWT-RPC来验证他们的身份,并确定他们是否允许继续进行。
如果认证通过,我想要下载的AppModule
,它有自己的起始Place
(和相应视图/主持人),并且我希望用户被重定向到该地方。
我怎么能实现这个功能?都:
AppModule
只有成功登录后下载;和AppModule
的首发位置?长话短说:恕我直言一个简单的认证页面,你可能不希望打扰整个GWT模块。
看一看在官方网站GWT的Dynamic Host Page文章。这是一个有点过时,但分析了一些权威性的用例,你可能会发现自己的,最简单的方式可以是动态只提供一个简单的基于servlet的登录页面上成功登录您的AppModule
的主页。
另见本SO后,如果你想要去的双模块结构。
我建议简单地增加春季安全到您的GWT Web应用程序。然后,您可以使用Spring Security的登录页面(可定制),并用本地用户列表,LDAP工作,等等。如果适用还将支持guest用户。
访问http://projects.spring.io/spring-security/获取更多信息和谷歌“GWT春天安”,如果你需要指导。
我与面板普兰。我的GWT应用程序有一个结构:
公共类课程实现入口点{
....所有变量
public void onModuleLoad() {
// Login - select from database all user
//
statusMessage.setText("Waiting for users list.");
String message = new String();
myDatastoreService.loginSelect(message,
new AsyncCallback<List<LoginInfo>>() {
public void onFailure(Throwable error) {
Window.alert(error.getMessage());
}
public void onSuccess(List<LoginInfo> result) {
statusMessage.setText("");
loginInfo = result;
if (loginInfo.isEmpty()) {
System.out.println("Empty");
UserDialog createUser = new UserDialog();
createUser.userInfo("F", -1, currentUser,
userTable, loginInfo, statusMessage);
} else {
loginDialog();
}
}
});
RootPanel.get("statusPanelContainer").add(statusMessage);
}
// Login dialog:
private void loginDialog() {
//Here you have to put all panels you need for login
// If login is successfully : you have to remove all login panels from main panels (not root)
// and call main dialog
mainDialog();
// If login is not successfully you stay on login panel
}
private void mainDialog() {
// Here you put all your applications mains panels
}
}