java - 使用 Java 在 Lotus Notes 客户端输入不正确的用户 ID 密码时控制台挂起

标签 java passwords lotus-notes userid

我正在编写一个独立的Java应用程序,它使用notes.jar与Lotus Notes客户端通信。该应用程序无法访问 Domino 服务器,这就是我使用 Lotus Notes 客户端的原因。

用户 ID 文件位置和密码由用户通过我的应用程序提供,然后使用它们连接到 Lotus Notes 客户端。

在客户端中,我首先使用应用程序在 Lotus Notes 客户端的 Notes.ini 文件中设置的默认 ID 创建一个 session ,然后切换 ID,即:

Session session = NotesFactory.createSession((String) null, (String) null, "defaultPassword");
session.createRegistration().switchToID(userSuppliedIDFilename, userSuppliedPassword);

如果用户提供的密码正确,则一切正常。

但是,如果密码错误,switchToID() 方法会提示控制台输入正确的密码:

The ID file being used is: CN=Test Test/=Development
Enter password (press the Esc key to abort):

我的 Java 应用程序无法响应此控制台提示,因此挂起。

有什么办法可以停止提示吗?即让 switchToID() 方法在密码错误时抛出异常,以便应用程序可以向用户返回错误消息?

有没有办法让我的应用程序将 Esc 键发送回提示符,以便我可以按照 Notes 返回的消息中的指示中止该过程?

是否有更好的方法来使用用户输入的 ID 文件和密码创建客户端 session ?

谢谢, 理查德

最佳答案

您可以切换到 userSuppliedIDFilename 而无需使用 switchToID() 并且能够通过这种方式捕获错误的 userSuppliedPassword:

    NotesThread.sinitThread();
    Session session = NotesFactory.createSession((String) null, (String) null, "defaultPassword");
    session.setEnvironmentVar("KeyFileName", userSuppliedIDFilename, true);
    session.recycle();
    NotesThread.stermThread();
    NotesThread.sinitThread();
    try {
        session = NotesFactory.createSession((String) null, (String) null, userSuppliedPassword);
    } catch (NotesException e) {
        // wrong password for userSuppliedIDFilename
        // ask user for correct password... 
    }

关于java - 使用 Java 在 Lotus Notes 客户端输入不正确的用户 ID 密码时控制台挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16334171/

相关文章:

php - 更新用户时对 Laravel 空密码进行哈希处理

copy - Lotus Notes 7 - 复制/移动文档。 (父级和响应文档)不更改 UNID?

java - Spring中DataBinder和ConversionService的区别

php - PHP 的逻辑错误!密码长度检查

java - 匹配两个 EditText 条目不适用于星号 (fieldOne.matches(fieldTwo))

lotus-notes - Lotus Notes 自定义查看收到的邮件

java - 将 LotusScript 参数传递给 Java

java - 没有 EJB3 的 Java Web 项目架构是什么样子的?

java - 找到模式时替换

java - 在后续步骤中访问资源 Spring Batch