4

如何以最正确的方式验证用户输入数据库的用户名和密码?

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 否则将弹出消息对话框,提示用户名或密码无效。有人可以帮我写代码吗,我不知道如何在 mysql 中使用 if-else 语句;

谢谢!:)

4

5 回答 5

2
  • 始终将哈希加密密码存储在数据库中,有关加密密码的更多详细信息,请参阅JASYPT
  • 对用户输入的密码进行加密,比较两个加密后的密码
  • 查询数据库时使用参数化查询
于 2013-02-21T06:31:09.677 回答
2

实现以下代码:

private void login() {
    try {
        if (user != null && pass != null) {
            String sql = "Select * from users_table Where username='" + user + "' and password='" + pass + "'";
            rs = stmt.executeQuery(sql);
            if (rs.next()) {
                //in this case enter when at least one result comes it means user is valid
            } else {
                //in this case enter when  result size is zero  it means user is invalid
            }
        }

        // You can also validate user by result size if its comes zero user is invalid else user is valid

    } catch (SQLException err) {
        JOptionPane.showMessageDialog(this, err.getMessage());
    }

}
于 2013-02-21T06:50:52.403 回答
0

你不必再对 mySQL 做任何事情了。您已经拥有凭据。一个例子:

if ((user.equals(username)) && (pass.equals(password))) {
   JFrame newFrame = new JFrame();
} else {
   JOptionPane.showMessageDialog(null, "alert", "alert", JOptionPane.ERROR_MESSAGE); 
}
于 2013-02-21T06:40:41.283 回答
0

将准备好的语句与 DButils 之类的库一起使用,这将大大简化您的工作。

此外,不要使用替换传递参数,例如select name from members where code =?. 如果您有许多参数,请创建一个对象数组并将它们传递到一个对象数组中,例如Objects[] parms = {code1,code2}.

于 2016-08-16T16:28:09.417 回答
-1
if (username.length()>0 && password.length()>0)
{
    String query = "Select * from adminlogin Where Username='" + username + "' and Password='" + password + "'";

    rs = sta.executeQuery(query);

   if (rs.next()) 
   {

        home hme=new home();
        this.setVisible(false);
        hme.setVisible(true);
   } 
   else 
   {
       JOptionPane.showMessageDialog(null,"username and password are wrong ");
   }
}
else
{
      JOptionPane.showMessageDialog(null,"please field username and password ");
}
于 2018-04-19T13:28:58.840 回答