绕过登录屏幕

时间:2013-07-30 05:06:51

标签: java login swt eclipse-rcp

在我们的rcp应用程序中,我们使用eclipse框架(Splash屏幕上的Login功能)实现了Login功能。

现在我们如何通过提供VM参数来绕过此登录(包括启动屏幕)?

如果VM参数提供了正确的用户名和密码,我们不希望显示登录页面(这包括启动画面,因为登录功能位于启动画面本身)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

不确定是否可以跳过启动画面(同样,没有看到任何这样做的理由),但是如果你将它从启动画面中拆分,你可以跳过显示登录对话框。

在应用程序启动时创建对话框,如下所示:

Application implements IApplication {

@Override
public Object start(IApplicationContext context) throws Exception {
    Display display = PlatformUI.createDisplay();
    try {

        LoginDialog dialog = new LoginDialog(display.getActiveShell());
        if (dialog.open() == Dialog.CANCEL) {
            return EXIT_OK;
        }

        int code = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());

        // Exit the application with an appropriate return code.
        return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK;

    } finally {

        if (display != null) {
            display.dispose();
        }
    }
}

然后,您可以通过检查所需的系统属性并使用属性值验证用户来跳过显示对话框:

    String username = System.getProperty("username");
    String pwd = System.getProperty("password");
    if (username != null && pwd != null) {
        // do something with username and password
    } else {
         LoginDialog dialog = new LoginDialog(display.getActiveShell());
         if (dialog.open() == Dialog.CANCEL) {
             return EXIT_OK;
          }
     }

此外,Platform.endSplash();可能会有所帮助。

答案 1 :(得分:0)

启动画面登录对话框是使用SplashScreenHandler实现的。这实际上已添加到您的应用程序包中。查看启动屏幕处理程序的源代码并在那里添加VM参数应该相对容易。

您也可以使用-noSplash命令行选项禁用启动画面。