GWT:认证后如何下载EntryPoint?

Posted

技术标签:

【中文标题】GWT:认证后如何下载EntryPoint?【英文标题】:GWT: How to download EntryPoint after authenticating? 【发布时间】:2013-12-13 19:43:28 【问题描述】:

这里的想法是将我的 GWT 应用程序放在 2 个不同的模块中:

    WebModule(入口点)只包含一个登录屏幕;和 AppModule(入口点)包含主应用程序

当用户访问该网站时,WebModule 会下载到他们的浏览器并向他们显示一个登录屏幕。然后他们必须提交用户名和密码,然后使用 GWT-RPC 对他们进行身份验证并确定是否允许他们继续。

如果身份验证通过,我希望下载 AppModule,它有自己的起始 Place(以及相应的视图/演示者),并且我希望将用户重定向到该位置。

如何实现此功能?两者:

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

【问题讨论】:

【参考方案1】:

长话短说:恕我直言,对于一个简单的身份验证页面,您可能不想打扰整个 GWT 模块。

查看 GWT 官方网站中的 Dynamic Host Page 文章。它有点过时,但分析了一些您可能会发现自己的身份验证用例。更简单的方法可能是仅在基于 servlet 的简单登录页面上成功登录时动态提供您的 AppModule 的主机页面。

如果您想使用双模块结构,另请参阅此SO 帖子。

【讨论】:

【参考方案2】:

我建议简单地将 Spring Security 添加到您的 GwT Web 应用程序中。然后,您可以使用 Spring Security 登录页面(可自定义)并使用本地用户列表、LDAP 等。如果适用,还将支持访客用户。

如果您需要指导,请访问http://projects.spring.io/spring-security/ 了解更多信息和谷歌“gwt spring security”。

【讨论】:

【参考方案3】:

我正在使用面板。 我的 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

【讨论】:

以上是关于GWT:认证后如何下载EntryPoint?的主要内容,如果未能解决你的问题,请参考以下文章

GWT 中的多个入口点

IntelliJ IDEA如何开发GWT应用?

GWT(IE)中的深层链接

GWT 上传/下载最佳实践

GWT-Rpc如何返回文件让浏览器弹出下载对话框

生成动态文件并在 GWT 中下载