【发布时间】:2013-02-21 06:25:22
【问题描述】:
如何以最正确的方式验证用户输入数据库的用户名和密码?
In c++, we used to verify by using if-else:
if((user == "username")&&(pass == "password")){
cout<<"You are now logon!";
}
在 java-mysql 中我不确定我是否走在正确的轨道上:
登录按钮
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
user = jTextField1.getText();
pass = jPasswordField1.getPassword();
login();
}
方法/功能
private void login() {
try {
if (user != null) {
sql = "Select * from users_table Where username='" + user + "'";
rs = stmt.executeQuery(sql);
rs.next();
username = rs.getString("username");
password = rs.getString("password");
}
}
catch (SQLException err) {
JOptionPane.showMessageDialog(this, err.getMessage());
}
}
如果用户输入的用户名和密码与数据库中的匹配,那么他将被引导到一个新的jFrame else 将弹出消息对话框,提示用户名或密码无效。有人可以帮我写代码吗,我不知道如何在 mysql 中使用 if-else 语句;
谢谢! :)
【问题讨论】:
-
您以明文形式保存密码?希望这不会被部署。
-
您没有使用 PreparedStatement 来防范 SQL 注入...您以纯文本形式返回值...嗯,这是我看到的两个主要问题。我也看不到您实际上在哪里对密码的值进行任何比较。