GWT:如何在认证后下载EntryPoint?

时间:2013-12-13 19:43:29

标签: java authentication gwt module

这里的想法是将我的GWT应用程序分为两个不同的模块:

  1. WebModule(入口点)只包含登录屏幕;和
  2. AppModule(入口点)包含主要应用程序
  3. 当用户访问该网站时,WebModule会下载到他们的浏览器中并向他们显示登录屏幕。然后,他们必须提交用户名和密码,然后使用GWT-RPC对其进行身份验证,并确定是否允许他们继续。

    如果身份验证通过,我希望下载AppModule,它有自己的起始Place(和相应的视图/演示者),我希望用户被重定向到那个地方

    我该如何实现此功能?这两种:

    • 仅在成功登录后强制AppModule下载;和
    • 将用户重定向到AppModule的起始位置?

3 个答案:

答案 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
}

}