Вход в систему управления паролем

У меня есть фрейм входа, который имеет два разных режима входа: "Пользователь" и "Администратор".

Моя проблема в режиме администратора (когда выберите администратора из jcombobox),

Когда я выбираю admin, мое первое текстовое поле должно заполняться "Администрирование" автоматически, и в моем jpasswordfiled оно должно искать свой номер пароля из текстового файла (то есть 2).

Но, Не принимать в режиме администратора:

public class LoginFrame extends javax.swing.JFrame implements ActionListener {

private String username;
private char[] Password;
...

private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) { 
        try {

        username = String.valueOf(jTextField1.getText());
        Password = jPasswordField1.getPassword();

if (jComboBox1.getSelectedIndex() == 2) {
            if (adminCanGoNext2()) {
                goAdminMainPage(); // Execute work
            } else {
                ErrorMessageLabel.setText("Did Not Match");
            }
        }
    } catch (Exception e) {
        ErrorMessageLabel.setText("Enter Correct Input");
 }

    public boolean adminCanGoNext2() throws IOException {
    FileReader fr = new FileReader("LoginInformation.txt");
    BufferedReader br = new BufferedReader(fr);
    String line;
    while( (line = br.readLine())!= null ){
        if(line.startsWith("Admin")){
            char[] charedPass=line.toCharArray();  // char password that read from file
            System.out.println("readed password is: "+ charedPass.toString());
            if(Arrays.equals(charedPass, Password)){
                return true;
            }
        }   
    }
    return false;
}

    public void goAdminMainPage() {
    System.out.println("Go ");
    }

...
    @Override
    public void actionPerformed(ActionEvent e) {
    if (e.getSource() == jComboBox1) {
         if (jComboBox1.getSelectedIndex() == 2) {
            jTextField1.setText("Administration");
        }
    }
    }
}

Информация для входа в систему. Текстовый файл:

Admin     2
271     tes     tt     Male     2013/05/30
458     tttt     uuuu     Female     2013/05/30

Теперь, когда я выбираю режим администратора, мой текст jtextfield1 отлично "Администрирование",

Но когда я попробую число "2" для поля пароля и нажму кнопку "Войти", не вносите никаких изменений!

1 ответ

Решение

Вы сравниваете строку с массивом символов (и они всегда оказываются неравными, очевидно).

Вы должны преобразовать пароль, прочитанный из файла, в массив символов, используя toCharArray() и затем сравните полученный массив с массивом символов, возвращенным JPasswordFields gePassword() метод. Для простого сравнения массивов вы можете использовать служебные методы java.util.Arrays,

Смотрите также это короткое демо.

РЕДАКТИРОВАТЬ:
Обратите внимание, что хранение паролей в строковых переменных не рекомендуется из соображений безопасности. (Конечно, хранение паролей в файлах в виде открытого текста, вероятно, представляет собой еще большую угрозу безопасности.) Раздел "Как использовать поля паролей" Учебников по Java может быть хорошим источником информации и указаний для начала работы.

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