VB 6 - Exemplo de Login e gerenciamento de usuários com Hash de senhas


Este programa mostra um exemplo de como acessar um banco de dados Microsoft Access e realizar a autenticação de usuário conferindo seu login e senha.

Estamos usando um módulo - mdlGlobal - para definir as variáveis globais e para realizar o acesso ao banco de dados Microsoft Access:

Option Explicit

Public NomeUsuario As String
Public DBConn As ADODB.Connection
Public LogInUserID As Long, LogInUserName As String

Public Function LoadDatabase(ByVal DatabaseName As String, Optional ByVal UserID As String, Optional ByVal Password As String) As ADODB.Connection
    Dim conData As ADODB.Connection
    
    Set conData = New ADODB.Connection
    
    conData.Provider = "Microsoft.Jet.OLEDB.4.0"
    conData.ConnectionString = "Data Source = " & DatabaseName
    conData.CursorLocation = adUseClient
    conData.Open , UserID, Password
    
    Set LoadDatabase = conData
End Function

Public Function SelectNewID(Cn As ADODB.Connection, ByVal TableName As String, Optional ByVal IDFieldName As String = "ID") As Long
    Dim Request As String, RS As ADODB.Recordset
    Dim NewID As Long
    
    Request = "SELECT MAX(" & IDFieldName & ") FROM " & TableName
    Set RS = Cn.Execute(Request)
    
    If RS Is Nothing Then
        NewID = 1
    Else
        If RS.RecordCount = 0 Then
            NewID = 1
        Else
            RS.MoveFirst
            
            If IsNull(RS.Fields(0).value) Then
                NewID = 1
            Else
                NewID = CLng(RS.Fields(0).value) + 1
            End If
        End If
    End If
    
    SelectNewID = NewID
End Function

Antes de gravar a senha no banco de dados o programa usa a classe clsMD5 para gerar um Hash da senha de forma que a informação fica muito mais segura pois se alguém conseguir acessar o banco de dados terá que decifrar o hash das senhas.

Um hash (ou escrutínio) é uma sequência de bits geradas por um algoritmo de dispersão, em geral representada em base hexadecimal, que permite a visualização em letras e números (0 a 9 e A a F), representando um nibble cada. O conceito teórico diz que "hash é a transformação de uma grande quantidade de informações em uma pequena quantidade de informações". http://pt.wikipedia.org/wiki/Hash

A princípio não existe nenhum usuário cadastrado na tabela e neste caso no primeiro acesso da aplicação será apresentada a tela de gerenciamento de usuários:

Usando este formulário podemos cadastrar um novo usuário ou atualizar a senha de um usuário cadastrado bastando apenas clicar duas vezes sobre o usuário existente no controle ListView:

Se o usuário selecionado for diferente do usuário atualmente logado será solicitado a informação da senha anterior.

Quando existir um usuário cadastrado, ao acessar a aplicação será apresentada a tela de login:

E se o login for feito com sucesso será apresentada a tela principal do programa:

Dessa forma você pode aprender a como fazer o login usando o Visual Basic com acesso a dados, como usar Classes no VB6 e como gerar um hash para proteger informações importantes.

Simples e funcional como só o Visual Basic 6 consegue ser...

Eu sei é apenas Visual Basic mas eu gosto...

Pegue o projeto completo aqui: LoginExemplo.zip

Mar 2:15 Ora, estando Jesus à mesa em casa de Levi, estavam também ali reclinados com ele e seus discípulos muitos publicanos e pecadores; pois eram em grande número e o seguiam.

Mar 2:16 Vendo os escribas dos fariseus que comia com os publicanos e pecadores, perguntavam aos discípulos: Por que é que ele como com os publicanos e pecadores?

Mar 2:17 Jesus, porém, ouvindo isso, disse-lhes: Não necessitam de médico os sãos, mas sim os enfermos; eu não vim chamar justos, mas pecadores.

Referências:


José Carlos Macoratti