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 ClassO 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?