Avaliação do Usuário

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa
 

 

ACOMPANHE A SÉRIE

Sistema de Login e Senha no Access/VBA - Parte 1/5
Sistema de Login e Senha no Access/VBA - Parte 2/5
Sistema de Login e Senha no Access/VBA - Parte 3/5
Sistema de Login e Senha no Access/VBA - Parte 4/5
Sistema de Login e Senha no Access/VBA - Parte 5/5

EXEMPLO DO ARTIGO

Faça o download do exemplo do artigo para estudo: LoginSeguro.zip
O exemplo está completo, então, não se assuste caso você encontre códigos diferentes do que está sendo ensinado nesta parte do artigo.
Para compreendê-lo completamente estude primeiro todas as 5 partes do artigo.

DICA IMPORTANTE PARA ELEVAR SEU CONHECIMENTO

Assista as vídeo-aulas do Curso de Access 2010 (OfficeGuru) e também as do Curso de Programação em Access/VBA.
Para os leigos o Curso de Programação em Access/VBA é obrigatório.

INTRODUÇÃO
 

A segurança e a privacidade em sistemas informatizados são requisitos fundamentais em todas as áreas onde são aplicados. Com isso a verificação de identidade de usuários e o controle de permissões de acesso tira o sono de muitos desenvolvedores, principalmente os iniciantes.

Esta é a primeira parte de uma série de 5 artigos sobre a implantação de um sistema básico de Login e Senha utilizando Access e VBA. Nesta etapa serão criadas as principais telas e as funcionalidades básicas do sistema.

Como a segurança deve estar presente em 99,99% dos sistemas multi-usuário criados no mundo todo, estudaremos técnicas para implementar a verificação de identidade de usuários de maneira detalhada, obedecendo pelo menos aos princípios mínimos de organização e segurança.

A idéia básica se constitui no fato de que o usuário, para acessar um sistema, deve informar um código que seja apenas de seu conhecimento e de mais ninguém, nem mesmo do administrador. Sistemas seguros trabalham desta forma. Mesmo que alguém tenha acesso indevido ao banco de dados onde as senhas estão armazenadas, não conseguirá determinar, com facilidade, qual é a senha do usuário. Pelo menos não em tempo hábil, pois, lembrem-se, quando se trata de informática nada é impossível.

Assim sendo, o que pretendemos é dificultar ao máximo o acesso não autorizado ao sistema que administramos ou desenvolvemos.

Então chega de papo e mãos à obra. O tutorial será criado no Access 2007, porém, as instruções servem para praticamente todas as versões do Access.

O FORMULÁRIO PRINCIPAL

Quase todo sistema possui, lógico, uma tela ou um menu principal, o qual gerencia o acesso aos demais itens do sistema. Este acesso deve ser garantido apenas aos usuários que estejam autorizados a ver, editar, incluir ou excluir informações, cada um com suas adequadas restrições.

O usuário, inicialmente, deseja obter acesso a esta tela ou menu. Para o nosso exemplo vamos criar um formulário bem simples, que servirá como nossa tela principal, aquela que fornece acesso aos demais recursos.

Veja o modelo abaixo:
 Formulário Principal

Não vou me preocupar em ensinar como chegar a esta estrutura de layout. Acredito que o leitor já saiba criar um formulário padrão e ajustar suas propriedades para deixar o visual mais agradável.

Neste passo apenas estes itens são obrigatórios:

  • O nome do formulário será FPrincipal.
  • O nome do botão de logout será btnLogout.
  • O nome do botão de cadastro de usuários será btnCadastroUsuario.

O nome dos outros botões não é importante, pois eles servem apenas para ilustração.

A caixa de texto que apresentará o usuário atual logado deverá ser bloqueada e conter, na propriedade fonte do controle, a seguinte função:

=getUsuarioAtual()

A caixa de texto que apresentará o grupo do usuário atual deverá ser bloqueada e conter, na propriedade fonte do controle, a seguinte função:

=getGrupoUsuarioAtual()

Não se preocupe com estas funções por enquanto. Na segunda parte do artigo falaremos sobre elas.

Obs: quem não conhece e não utiliza algum padrão para nomear objetos de sistemas leia o artigo sobre padronização e organização.

Nos eventos Ao Abrir e Ao Ativar do formulário inclua este código para maximizar a tela, já que o formulário principal deve ser exibido sempre maximizado:

Private Sub Form_Open(Cancel As Integer)
  DoCmd.Maximize
End Sub
Private Sub Form_Activate()
  DoCmd.Maximize
End Sub




{ads1} 

A TABELA DE USUÁRIOS

Para armazenar as informações dos usuários, que são o login, a senha e o grupo a que pertencem, temos que criar a tabela Usuario em nosso banco de dados.
Ela deverá conter os seguintes campos:

login – Texto, 20 caracteres, chave primária;
senha – Texto, 32 caracteres
grupo – Número, Byte

No atributo grupo utilize o assistente de pesquisa e crie uma lista de valores de duas colunas, contendo os seguintes itens:

Lista de Valors - Grupos de Usuários

Altere as propriedade de formato do campo, ocultando a primeira coluna do atributo grupo, colocando a sua largura com valor zero (0 cm), para que a tabela tenha o seguinte layout:

 Tabela Usuário


A largura das colunas pode ser definida ao selecionarmos o campo desejado, escolhendo a aba Pesquisa nas Propriedades do campo.

No item Coluna acoplada escolhemos qual será a coluna utilizada como sendo o valor representante real do campo, aquele que será armazenado.

No item Número de colunas temos o total de colunas da caixa de combinação (ou caixa de listagem).

No item Larguras das colunas podemos definir a largura de cada uma das colunas de nossa caixa de combinação (ou caixa de listagem). Para ocultar uma coluna basta definir o seu valor como 0cm.

No exemplo abaixo temos o seguinte valor para a propriedade Larguras das colunas:

0cm;4cm

Isto significa que a primeira coluna (código do grupo) está oculta e que a coluna da descrição do grupo terá 4cm de largura. Contudo o valor armazenado será o da primeira coluna, pois ela é a coluna acoplada.

Veja o exemplo na imagem abaixo:


Propriedades do campo grupo

Todos os campos devem ter a opção Requerido = Sim.

Em seguida cadastre alguns usuários e senhas na tabela, para que o sistema possa ser testado.



{ads1} 

O FORMULÁRIO DE LOGIN

Como não poderia ser diferente, claro, temos que criar um formulário para que sirva de interface entre o sistema e o usuário que efetuará o login.

Crie um formulário, no modo design, com o seguinte aspecto:

 Tela de Login

Estes são os requisitos obrigatórios do formulário:

  • O nome do formulário será FLogin.
  • Ajuste a propriedade Popup = Sim.
  • O nome da caixa de combinação que exibirá a lista de usuários será cbxLogin.
  • O nome da caixa de texto para senha será txtSenha.
  • A máscara de entrada da caixa de texto para senha deverá ser a palavra Senha. Isto faz com que os caracteres sejam substituídos por asteriscos.
  • O nome do botão de login será btnLogin.
  • O nome do botão de saída do sistema será btnSair.
  • O tipo de origem da linha do campo cbxLogin será Tabela/Consulta.

A origem da linha para o campo cbxLogin será o seguinte código SQL:

SELECT Usuario.login FROM Usuario ORDER BY Usuario.login;

Também devemos informar, nas configurações do banco de dados, que o formulário FLogin deverá ser aberto por padrão na inicialização do sistema. Nas versões Access 2003 e anteriores isto pode ser configurado no menu Ferramentas -> Inicializar -> Exibir Formulário.

Nas versões Access 2007 e posterior clique no botão do office (canto superior esquerdo) e vá em Opções do Access -> Banco de Dados Atual -> Exibir Formulário.

Em todos os modos escolha o formulário FLogin entre as opções apresentadas.

CÓDIGOS DE VERIFICAÇÃO DE LOGIN E SENHA

O primeiro código que vamos criar é para o botão btnSair. Ele será responsável por encerrar o aplicativo, caso o usuário desista de acessar o sistema. Inclua as seguintes instruções no evento Ao Clicar do botão:

Private Sub btnSair_Click()
  
  If MsgBox("Deseja encerrar o aplicativo?", _
              vbQuestion + vbYesNo, "Sair do Sistema") = vbYes Then
    Application.Quit
  End If
  
End Sub

Agora vamos criar o código para o botão btnLogin, que será responsável por validar a senha do usuário e permitir o acesso ao formulário principal.

Para isto vamos utilizar a função DCount(), que realiza uma pesquisa na fonte de dados informada e retorna a quantidade de registros que correspondem ao critério informado nos parâmetros. Neste caso solicitaremos a quantidade de registros na tabela Usuario que contem o campo login e senha igual ao texto extraído das respectivas caixas de digitação.

Caso retornte uma quantidade igual a um registro, a senha do usuário foi validada, então o acesso é liberado. Após isso a tela de login é fechada e o formulário principal é aberto. Caso a verificação da senha falhe, uma mensagem é exibida ao usuário.

Este é apenas um dos métodos possíveis de se verificar a senha de um usuário. Cada desenvolvedor deve escolher aquela que achar mais apropriada para o seu caso. Tudo depende da sua imaginação, desde que observados os princípios básicos das boas práticas de programação e os procedimentos de segurança da operação.

Veja o código do evento Ao Clicar do botão btnLogin:

Private Sub btnLogin_Click()
  
  Dim criterio As String
  
  criterio = "login='" & cbxLogin & "' And senha='" & txtSenha & "'"
  If DCount("login", "Usuario", criterio) = 1 Then
    DoCmd.Close
    DoCmd.OpenForm "FPrincipal"
  Else
    MsgBox "Senha incorreta! Por favor, tente novamente.", vbExclamation, "Login"
    txtSenha.SetFocus
  End If
  
End Sub

É importante que o leitor compreenda que o critério utilizado pela função DCount() corresponde a uma cláusula Where do SQL, prorém sem a palavra Where. Por isso ele deve ser preparado conforme as especificações do SQL, incluindo o envolvimento dos elementos de texto com as aspas simples, senão ocorerá um erro e o esquema não irá funcionar.

Devemos agora criar o código para efetuar o logout da tela principal, contudo sem sair por completo do sistema, voltando para a tela de login. Veja o código do botão btnLogout, no formulário FPrincipal:

Private Sub btnLogout_Click()
  
  If MsgBox("Deseja efetuar Logout?", vbQuestion + vbYesNo, "Logout") = vbYes Then
    DoCmd.Close
    DoCmd.OpenForm "FLogin"
  End If
  
End Sub

Bem, até aqui o nosso sistema básico de login e senha já está funcional. Mas, como já foi dito, este é um sistema básico.

No próximo artigo iremos tratar sobre as primeiras considerações a respeito das funcionalidades implantadas.

Nos encontramos na segunda parte. Até lá...

 

Seja social. Compartilhe!