我想使用此动作侦听器方法检查用户名和密码 但我总是得到错误的密码!使用散列映射进行密码检查
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);
}
}
});
代码的问题是什么?
首先,你似乎是采用明文存储的密码......除此之外,它很难肯定地说 - 您执行了哪些诊断? –
“User#getPassword”实际返回的是什么?不要忘记它的(正确)大小写敏感。不要使用'passwordField.getPassword()。toString()'这是一个安全风险。密码比较应该使用某种散列算法,而不是 – MadProgrammer