这里的想法是将我的GWT应用程序分为两个不同的模块:
WebModule
(入口点)只包含登录屏幕;和AppModule
(入口点)包含主要应用程序当用户访问该网站时,WebModule
会下载到他们的浏览器中并向他们显示登录屏幕。然后,他们必须提交用户名和密码,然后使用GWT-RPC对其进行身份验证,并确定是否允许他们继续。
如果身份验证通过,我希望下载AppModule
,它有自己的起始Place
(和相应的视图/演示者),我希望用户被重定向到那个地方
我该如何实现此功能?这两种:
AppModule
下载;和AppModule
的起始位置?答案 0 :(得分:0)
长话短说:恕我直言,对于一个简单的身份验证页面,你可能不想打扰整个GWT 模块。
查看官方GWT网站上的Dynamic Host Page文章。它有点过时了,但是分析了一些您可能会遇到的auth用例。更简单的方法是仅在成功登录基于servlet的简单登录页面时动态提供AppModule
的主机页面。
如果您想使用双模块结构,请参阅此SO帖子。
答案 1 :(得分:0)
我建议您只需将Spring Security添加到您的GwT Web应用程序中。然后,您可以使用Spring Security登录页面(可自定义)并使用本地用户列表,LDAP等。如果适用,还将支持访客用户。
如果您需要指导,请访问http://projects.spring.io/spring-security/以获取更多信息和Google“gwt spring security”。
答案 2 :(得分:0)
我正在准备面板。 我的GWT应用程序有一个结构:
公共类课程实现了EntryPoint {
....所有变量
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
}
}