我的代码确实有一些问题,我在Winform项目中使用BCRYPT库。进行注册后,一切正常,以下代码用于注册表格。这是我的代码供您查看。
using BCrypt.Net;
注册表格中的代码,这个很好用。
cmd.Parameters.AddWithValue("@Password", BCrypt.Net.BCrypt.HashPassword(txtPassword.Text));
但是当我想登录时,我尝试使用如下代码。
public partial class Login : Form
{
MySqlConnection Connection = new MySqlConnection("server=localhost; database=bh_lms; user=root; password=root; pooling = false; convert zero datetime=True");
public Login()
{
InitializeComponent();
}
private void Login_Load(object sender, EventArgs e)
{
//SplashScreen Loading
for (int i = 0; i < 120; i++)
{
Thread.Sleep(40);
}
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (BCrypt.Net.BCrypt.Verify(txtPassword.Text, ""))
{
Connection.Open();
MySqlCommand cmd = new MySqlCommand("SELECT * FROM registration Where Username=@Username, Password=@Password", Connection);
cmd.Parameters.Add(new MySqlParameter("@Username", txtUsername.Text));
cmd.Parameters.Add(new MySqlParameter("@Password", txtPassword.Text));
MySqlDataReader reader = cmd.ExecuteReader();
int count = 0;
string userRole = string.Empty;
while (reader.Read())
{
count = +1;
userRole = reader["RegistrationType"].ToString();
}
if (count == 1)
{
this.Hide();
if (userRole == "Admin")
{
Dashboard.dbAdmin DashboardAdmin = new Dashboard.dbAdmin();
DashboardAdmin.Show();
}
else if (count > 1)
{
MessageBox.Show("Please enter correct username and password or register a new account!", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error); ;
}
}
}
else
{
Connection.Close();
}
}
private void btnRegister_Click(object sender, EventArgs e)
{
this.Hide();
Registration Register = new Registration();
Register.Show();
}
}
}
我具有用户类型(管理员,工作人员,人力资源等),并且如果用户面板不起作用,我想尝试此代码。但是,由于我无法使用BCrypt验证密码,因此,我最好还是保留旧代码,但是人们建议使用Parameters完全没有安全性。
如果有人可以帮助我如何验证密码,请告诉我。已经快1周了,仍然没有好结果。