使用hashmap检查密码

时间:2013-07-26 05:59:06

标签: java passwords hashmap

我想使用此动作侦听器方法检查用户名和密码 但我总是收到错误的密码!

public void actionPerformed(ActionEvent arg0) {
    String uN = usernameFiled.getText();
    String pass = passwordField.getPassword().toString();
    //

    if (uN.isEmpty() || pass.isEmpty()){
            JOptionPane.showMessageDialog(LoginPage.this, "Fields should not be empty!", "Error", JOptionPane.ERROR_MESSAGE);
            return;
    }



    HashMap<String, User> users =  UserDAO.getInstance().getUsers();

    User temp = users.get(uN);

    if (temp.getPassword().equals(pass)){
            JOptionPane.showMessageDialog(LoginPage.this, "Login successfull", "Success", JOptionPane.INFORMATION_MESSAGE);

    }

    else {
            JOptionPane.showMessageDialog(LoginPage.this, "Wrong username or password", "Error ", JOptionPane.ERROR_MESSAGE);
    }
    }
});

代码有什么问题?

2 个答案:

答案 0 :(得分:0)

passwordField.getPassword()返回char[]。因此,通过调用toString(),您可以获得char[]的对象字符串。所以,您使用的语句不会给您密码。

String pass = passwordField.getPassword().toString(); 

以下列方式使用它。

String pass = new String(passwordField.getPassword());

答案 1 :(得分:0)

JPasswordField#getPassword返回char[]中此TextComponent中包含的文本。 char[].toString()不返回字符串值,array.toString实际上返回变量的名称并具有代码。

您应该致电new String(passwordField.getPassword())String.valueOf(passwordField.getPassword())

尝试 -

String pass = new String(passwordField.getPassword());

String pass = String.valueOf(passwordField.getPassword());