gpt4 book ai didi

Java & MySQL - 创建登录认证

转载 作者:可可西里 更新时间:2023-11-01 07:35:30 26 4
gpt4 key购买 nike

我已成功将我的 Java 应用程序连接到 MySQL,然后我希望用户输入他们的用户名和密码。然后它会向 MySQL 发送查询并查找具有该用户名的位置,然后将给定的密码与数据库中的密码进行比较。在大多数情况下,这是有效的。假设用户名是“ABC”,密码是“def”。如果当提示输入用户名并输入“ABC def”时,表示成功,密码为“def a”。我相信问题出在 rs.next(),它只检查空格前的任何文本。

有什么解决方案吗?

    String databaseUsername = "";
String databasePassword = "";

// Check Username and Password
System.out.print("Enter Username: ");
String name = sc.next();
System.out.print("Enter Password: ");
String password = sc.next();

// Create SQL Query
Statement stmt = connection.createStatement();
String SQL = "SELECT * FROM users WHERE users_name='" + name + "' && users_password='" + password+ "'";

ResultSet rs = stmt.executeQuery(SQL);

// Check Username and Password
while (rs.next()) {
databaseUsername = rs.getString("users_name");
databasePassword = rs.getString("users_password");
}

if (name.equals(databaseUsername) && password.equals(databasePassword)) {
System.out.println("Successful Login!\n----");
} else {
System.out.println("Incorrect Password\n----");
}

最佳答案

如果 ResultSet 返回一行,则 SQL 语句已经检查了用户名和密码。您无需再次检查。此外,您应该建立一个不能多次使用相同用户名的系统。 (使其唯一或在数据库中键入它)

此外,使用准备好的语句和散列密码来避免注入(inject)和其他攻击。

关于Java & MySQL - 创建登录认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com