Можно ли полностью замаскировать пароль с помощью JLine?

Я использую Spring Shell для интерфейса командной строки и хочу прочитать пароль из строки ввода. Для этой цели у Spring shell есть jline, поэтому, используя официальную документацию [1] jline, он предлагает следующее:

public static void main(String[] args) throws IOException {
    String password = new ConsoleReader().readLine('*');
    System.out.println("My password is: "+password);
}

При запуске приложения это выглядит так:

mysecretpassword   << entered by myself 
****************   << masking from jline
My password is: mysecretpassword  << my output

Итак, мой вопрос: какова цель маскировки пароля, если он все равно отображается, когда я его набираю? Есть ли возможность сделать это в стиле Unix и даже не показывать пароль при его наборе?

[1] http://jline.sourceforge.net/

2 ответа

Решение

Пока вы отмечали свой вопрос в Spring-shell, существует открытая проблема поддержки маскированных (парольных) опций.

Для чего бы то ни было, мы реализовали эту функцию напрямую (в обход JLine), как это было в Spring XD: (см. UserInput.prompt()) https://github.com/spring-projects/spring-xd/blob/master/spring-xd-shell/src/main/java/org/springframework/xd/shell/command/ConsoleUserInput.java

Другие вопросы по тегам