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

Java GWT:认证后如何下载EntryPoint?,java,authentication,gwt,module,Java,Authentication,Gwt,Module,这里的想法是将我的GWT应用程序放在两个不同的模块中: WebModule(入口点),仅包含一个登录屏幕;及 包含主应用程序的AppModule(入口点) 当用户访问网站时,WebModule将下载到他们的浏览器中,并向他们显示登录屏幕。然后,他们必须提交用户名和密码,然后使用GWT-RPC对其进行身份验证并确定是否允许继续 如果身份验证通过,我希望下载AppModule,它有自己的起始位置Place(以及相应的视图/演示者),并且我希望将用户重定向到该位置 如何实现此功能?两者: 仅在成功登

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

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

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

    如何实现此功能?两者:

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

    长话短说:对于一个简单的身份验证页面,您可能不想麻烦整个GWT 模块

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


    如果您想使用双模块结构,请参阅本文。

    我建议您只需将Spring安全性添加到GwT web应用程序中即可。然后,您可以使用Spring安全登录页面(可自定义),并使用本地用户列表、LDAP等。如果适用,还将支持来宾用户

    请访问以获取更多信息,如果您需要指导,请使用谷歌“gwt spring security”。

    我对面板很满意。 我的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
    }
    
    模块加载()上的公共void{
    //登录-从数据库中选择所有用户
    //
    statusMessage.setText(“等待用户列表”);
    字符串消息=新字符串();
    myDatastoreService.loginSelect(消息,
    新的AsyncCallback(){
    失败时公共无效(可丢弃错误){
    Window.alert(error.getMessage());
    }
    成功时公开作废(列表结果){
    statusMessage.setText(“”);
    loginInfo=结果;
    if(loginInfo.isEmpty()){
    System.out.println(“空”);
    UserDialog createUser=新建UserDialog();
    createUser.userInfo(“F”,-1,currentUser,
    用户表、登录信息、状态消息);
    }否则{
    loginDialog();
    }
    }
    });
    获取(“statusPanelContainer”).add(statusMessage);
    }
    //登录对话框:
    私有void loginDialog(){
    //在这里,您必须放置登录所需的所有面板
    //如果登录成功:您必须从主面板(而不是根面板)中删除所有登录面板
    //并调用主对话框
    main对话框();
    //如果登录未成功,您将停留在登录面板上
    }
    私有void main对话框(){
    //在这里,你把你所有的应用电源面板
    }
    
    }