我在 vb.net 中有一个使用 mysql 作为数据库的应用程序。该应用程序有一个登录表单。还有一个注册表单,可以使用 bcrypt.net 在存档中输入新密码,如本站所示:
这是我注册新用户的代码(公共程序Clean
用于清理表单):
Private Sub btSignUp_Click(sender As Object, e As EventArgs) Handles btSignUp.Click
dim hash as string
hash = HashPassword(txConfirmPass.Text)
If (txPass.Text <> txConfirmPass.Text) Then
MessageBox.Show("Passwords don't matches")
Else
Dim sql As String = "INSERT INTO fusion_login(name,user,password) VALUES (@name,@user,@pass)"
Using myconnection As MySqlConnection = Connection.getInstance.getConnection()
Using mycommand As New MySqlCommand()
With mycommand
.CommandText = sql
.CommandType = CommandType.Text
.Connection = myconnection
.Parameters.Add("@name", MySqlDbType.VarChar).Value = txName.Text
.Parameters.Add("@user", MySqlDbType.VarChar).Value = txUser.Text
.Parameters.Add("@pass", MySqlDbType.VarChar).Value = hash
End With
Try
myconnection.Open()
mycommand.ExecuteNonQuery()
If (MessageBox.Show("Do you insert a new user again?", "Register", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then
Clean(Me)
Else
Me.Hide()
Login.Show()
End If
Catch ex As MySqlException
MessageBox.Show("Error: " + ex.ToString)
Finally
myconnection.Close()
End Try
End Using
End Using
End If
End Sub
此代码有效!
现在我正在尝试实现对使用上述过程创建的用户进行身份验证的代码,但我无法让它工作。这是我到目前为止所拥有的:
Private Sub btLogin_Click(sender As Object, e As EventArgs) Handles btLogin.Click
Dim hash as String
hash = HashPassword(txPass.text)
Dim sql As String = "SELECT user,password FROM fusion_login WHERE user = @user AND password = @pass"
Using myconnection As MySqlConnection = Connection.getInstance.getConnection()
Using mycommand As New MySqlCommand()
With mycommand
.CommandText = sql
.CommandType = CommandType.Text
.Connection = myconnection
.Parameters.Add("@user", MySqlDbType.VarChar).Value = txUser.Text
.Parameters.Add("@pass", MySqlDbType.VarChar).Value = hash
End With
Try
myconnection.Open()
myreader = mycommand.ExecuteReader
If myreader.HasRows = 0 Then
Me.Hide()
FusionPrincipal.Show()
Else
MessageBox.Show("Error", "Login", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txUser.Focus()
End If
Catch ex As MySqlException
MessageBox.Show("Error: " + ex.ToString)
Finally
myconnection.Close()
myreader.Close()
End Try
End Using
End Using
我不确定我是否输入了错误的密码,或者在登录时比较了错误的用户名/密码。这里可能是什么问题?