gpt4 book ai didi

c# - 从数据库检查登录凭据

转载 作者:行者123 更新时间:2023-12-01 00:20:41 25 4
gpt4 key购买 nike

我将用户名和密码存储在 MySql 数据库中。我正在使用以下代码根据我的数据库中的数据验证凭据以进行登录。这些代码工作正常。我的问题是这是否是不好的做法,是否有更好的方法来做到这一点。

我的方法是连接到该数据库,提取这些信息并将其存储在列表中,并将它们与来自文本框输入的用户输入进行比较。

//Extracting information from the database and storing it in a List
public void Login()
{
MySqlCommand cmdReader;
MySqlDataReader myReader;

userQuery = "SELECT * FROM User";
string name = "Name";
string user = "UserName";
string pw = "Password";

string connString = "server=" + server + "; userid=" + userid + "; password=" + password + "; database=" + database;
try
{
conn.ConnectionString = connString;
conn.Open();
cmdReader = new MySqlCommand(userQuery, conn);
myReader = cmdReader.ExecuteReader();
while (myReader.Read())
{
string tempUser, tempPassword;
if (name != null)
{
tempUser = myReader.GetString(user);
tempPassword = myReader.GetString(pw);
users.Add(tempUser);
passwords.Add(tempPassword);
}
}
myReader.Close();

}
catch (Exception err)
{
MessageBox.Show("Not connected to server. \nTry again later.");
Application.Current.Shutdown();
}
}

//Comparing the List data with the users input from textbox1 and textbox2 to verify
private void btn1_Click(object sender, RoutedEventArgs e)
{
for (int x = 0; x < users.Count; x++)
{
for (int y = 0; y < passwords.Count; y++)
{
if (users[x] == textbox1.Text && passwords[y] == textbox2.Text)
{
MessageBox.Show("Login successful");
}
}
}
}

最佳答案

  1. 不要在数据库中以纯文本形式存储密码,而是存储它们的哈希值。见( Best way to store password in database )
  2. 不是查询和检索所有用户,而是将特定的用户名密码 发送到数据库并比较返回的结果。

作为旁注,不要使用字符串连接来形成 SQL 查询,而是使用参数,例如:

using (MySqlCommand cmd = new MySqlCommand("SELECT Count(*) FROM User = @userName AND password = @password"),conn)
{
cmd.Parameters.AddwithValue("@username", username);
cmd.Parameters.AddwithValue("@password", password);
....
var count = cmd.ExecuteScalar(); //and check the returned value
}

目前你正在从User表中检索所有记录,然后将其与客户端的值进行比较,想象一下,如果你有大量用户,那么将那么多数据带到客户端是不可能的感觉。

关于c# - 从数据库检查登录凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28705515/

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