Mais uma vez estou aqui.
Tenho que fazer um sistema de login para entrar no sistema! Uso a implementação do bcrypt para .NET deste site: http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx para fazer o registro do novo usuário. Eis o código usado do botao de incluir um novo registro (estou usando interfaces):
Public Class Registro Implements iDal(Of Registros) Protected _Conexao As iConexao 'Public logon As Login Public valorrecebido, hash As String Public Sub New(Conexao As iConexao) InitializeComponent() _Conexao = Conexao _Conexao.Open() End Sub Public Sub Dipose() Implements iDisposable.Dipose GC.SuppressFinalize(Me) End Sub Private Sub btSignUp_Click(sender As Object, e As EventArgs) Handles btSignUp.Click Dim reg As New Registros reg.nome = txNome.Text reg.usuario = txUsuario.Text Insert(reg) End Sub Public Function Insert(Model As Registros) As Registros Implements iDal(Of Registros).Insert hash = HashPassword(txSenha2.Text) If (txSenha.Text <> txSenha2.Text) Then MessageBox.Show("Senhas não conferem") Else Dim sql As String = "INSERT INTO login_fusion(nome,usuario,senha) VALUES (@nome,@usuario,@senha)" Using mycommand As MySqlCommand = _Conexao.GetConexao.CreateCommand() With mycommand .CommandText = sql .CommandType = CommandType.Text .Connection = myconnection .Parameters.Add("@nome", MySqlDbType.VarChar).Value = txNome.Text .Parameters.Add("@usuario", MySqlDbType.VarChar).Value = txUsuario.Text .Parameters.Add("@senha", MySqlDbType.VarChar).Value = hash End With Try myconnection.Open() mycommand.ExecuteNonQuery() If (MessageBox.Show("Incluir novo registro?", "Registro", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then Limpar(Me) 'sub para limpar todos os campos declarada como publica em um módulo Else Me.Hide() 'tem que mostrar o formulário de login End If Catch ex As MySqlException MessageBox.Show("Error: " + ex.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally myconnection.Close() End Try End Using End If Return Model End Function End Class
O referido site diz o seguinte para autenticar o usuário em C#:
bool matches = BCrypt.CheckPassword(candidate, hashed);
Sendo que hashed é a senha criptograda vinda do mysql e candidate a senha do textbox!
Preciso de fazer a autenticação do usuário no login, como proceder usando queries parametrizadas?