Access inicio | | | | | |
Olá,
Seja Bem Vindo ao Blog.

Conecte-se ou registre-se e utilize gratuitamente este equipamento, temos exemplos referente a criação de banco de dados e desenvolvimento de softwares e programas utilizando o Microsoft Access.


Administração do Blog AccessDoProgramador.

Access - Segurança de Dados (Login Seguro)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

07112012

Mensagem 

Access - Segurança de Dados (Login Seguro)






por Eduardo Machado (Good Guy)

A Editora Ciência Moderna aprovou e publicou recentemente o meu livro TÉCNICAS ESPECIAIS DE ACCESS VBA com esta função para logar em sistemas com várias novidades inclusive gerenciar usuários e seus níveis com criptografia e geração de log de erros de login. Nele você encontrará diversas técnicas de desenvolvimento em Access VBA, inclusive dois sistemas PDV completos para você iniciar o seu negócio. Site www.lcm.com.br. Sucesso para todos !!! Obrigado Dilson pela oportunidade de divulgar aqui !!!

Um grande abraço de seu amigo,

Eduardo Machado (Good Guy)


Última edição por good guy em Dom 29 Jan 2017 - 0:04, editado 6 vez(es)
avatar
good guy
Facilitador
Facilitador

Brasil


http://www.goodguyaccessvba.com.br

Voltar ao Topo Ir em baixo

- Tópicos similares
Compartilhar este artigo em: diggdeliciousredditstumbleuponslashdotyahoogooglelive

Access - Segurança de Dados (Login Seguro) :: Comentários

Mensagem em Seg 5 Maio 2014 - 1:04 por socgyn

Caso eu queira, que ao logar registre na tabela Usuário a data e hora que determinada pessoa logou, teria como informar como fazê-lo ?
Tenho uma tabela com o nome de: Usuario ( com os campos login, senha, DtaHour)
no Formulário de login tem os campos: CaixaLogin ( com origem dos dados buscando os usuários na tabela para seleção), CaixaSenha e os botões: login, alterar senha (abre outro formulário e caso o usuário e senha estejam corretos é possível alterar a senha por ele, e por fim, o botão sair. Já tentei de várias formas colocar código para quando a pessoa logar registre a data e hora que logou mas não consigo.

Voltar ao Topo Ir em baixo

avatar

Mensagem em Seg 5 Maio 2014 - 11:50 por good guy

Olá amigo,

Aguarde um pouco que vou preparar para você uma solução. Em breve aqui mesmo !!! Obrigado pela paciência !!!

Eduardo Machado (Good Guy)

Visite meu site, clique nos meus anúncios, baixe meus aplicativos, muitos deles gratuitos !!!
www.goodguyaccessvba.com.br

Voltar ao Topo Ir em baixo

Mensagem em Seg 5 Maio 2014 - 12:16 por socgyn

Obrigado pelo retorno, aguardando...

Voltar ao Topo Ir em baixo

avatar

Mensagem em Ter 6 Maio 2014 - 13:48 por good guy

Com algumas modificações no código.

4shared.com/zip/NGm6jV_Qce/Aplicao_Demo__1_.html
Código:
'Funcão que verifica a existência do usuário
Public Function verificaLogin(sLogin As String, sSenha As String)
'Código de Eduardo V. Machado (Good Guy)
On Error Resume Next
Dim nLogin As String
Dim nSenha As String
Dim xLogin As String
Dim yLogin As String
Dim zLogin As String
Dim nCodigo As Integer
'Dim UsuárioAtual As String

nLogin = txtNome   'Nome do usuário digitado na caixa de texto'login'
nSenha = txtSenha   'Senha do usuário digitado na caixa de texto 'senha'

nCodigo = Nz(DLookup("Codigo", "tblCadastro", "login = '" & nLogin & "'"))
sLogin = CStr(Nz(DLookup("login", "tblCadastro", "login = '" & nLogin & "'")))
sSenha = CStr(Nz(DLookup("senha", "tblCadastro", "login = '" & sLogin & "'")))

If IsNull(txtNome) Then
Exit Function
Else
If sLogin <> "" Or sLogin = nLogin Then 'Valida usuário
MsgBox "Login válido !!! ", vbInformation, "Testa Login"
Else
MsgBox "Login inválido !!!", vbInformation, "Testa Login"
DoCmd.Close acForm, "Mudança de Nome de Logradouro"   'Nome de um formulário exemplo a ser fechado
End If
End If

If IsNull(txtSenha) Then
Exit Function
Else
    If sSenha = nSenha And sLogin = nLogin Then 'Valida senha do Usuário
      MsgBox "Senha válida e/ou Login válido !!!", vbInformation, "Testa Login"
        Cancelou = False
        UsuárioAtual = Me.txtNome
               
        DoCmd.Close acForm, "frmSenhaML", acSaveYes
        DoCmd.OpenForm "Mudança de Nome de Logradouro", acNormal 'Nome de um formulário exemplo a ser aberto
    Else
 MsgBox "Senha inválida e/ou Login inválido !!!", vbInformation, "Testa Login"
    DoCmd.Close acForm, "Mudança de Nome de Logradouro"  'Nome de um formulário exemplo a ser fechado
    End If
End If
End Function

Private Sub cmdOK_Click()
On Error Resume Next
If Not IsNull(txtNome) And Not IsNull(txtSenha) Then
Call verificaLogin(txtNome, txtSenha)
DoCmd.Close acForm, "frmSenhaML", acSaveYes

End If

Private Sub cmdCancelar_Click()     'Botão Cancelar do formulário de login
On Error Resume Next
Cancelou = True
DoCmd.Close acForm, Me.Name
End Sub

OBS: Coloque o seguinte módulo à parte:

[B]basFunções e Propriedades de Apoio[/B] ( Segue abaixo código para validar a propriedade Cancel do Prof.   Flávio Morgado)

Option Compare Database
Option Explicit

Private mfCancel As Boolean
Private mstrUsuário As String

Public Property Get Cancelou() As Boolean
    Cancelou = mfCancel
End Property

Public Property Let Cancelou(ByVal vNewValue As Boolean)
    mfCancel = vNewValue
End Property

Public Property Get UsuárioAtual() As String
    UsuárioAtual = mstrUsuário
End Property

Public Property Let UsuárioAtual(ByVal vNewValue As String)
    mstrUsuário = vNewValue
End Property

Voltar ao Topo Ir em baixo

Mensagem em Dom 13 Jul 2014 - 10:39 por Fabio Franco

Olá!
Coloquei no código para abrir meu formulário principal.
Como faço para que outros formulários, que são acessados no meu formPrincipal também fiquem limitados as permissões configuradas?
Aguardo.

Grato!

Voltar ao Topo Ir em baixo

avatar

Mensagem em Seg 14 Jul 2014 - 11:56 por good guy

Olá Fábio,

Coloque no evento Form_Open de seus novos formulários o código acima, mudando para cada formulário o nome do formulário que será fechado caso a senha seja inválida.

Voltar ao Topo Ir em baixo

Mensagem em Qua 23 Jul 2014 - 12:00 por Fabio Franco

Olá!
Obrigado pelo retorno!
No entanto, não estou conseguindo.
O código que devo colocar é seria esse?
Código:
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(login) And Not IsNull(senha) Then
If verificaLogin(login, senha) = True Then
DoCmd.Close acForm, "frmTesteLogin", acSaveYes
End If
End If

End Sub

Public Function verificaLogin(sLogin As String, sSenha As String)
Dim nLogin As String
Dim nSenha As String
Dim xLogin As String
Dim yLogin As String
Dim zLogin As String
Dim nCodigo As Integer

Dim x As String
Dim y As String
Dim z As String

nLogin = login
nSenha = senha

x = Nz(DLookup("Nivel", "tblNiveis", "Codigo = 1"))
y = Nz(DLookup("Nivel", "tblNiveis", "Codigo = 2"))
z = Nz(DLookup("Nivel", "tblNiveis", "Codigo = 3"))

nCodigo = Nz(DLookup("Codigo", "tblCadastro", "login = '" & nLogin & "'"))
sLogin = CStr(Nz(DLookup("login", "tblCadastro", "login = '" & nLogin & "'")))
sSenha = CStr(Nz(DLookup("senha", "tblcadastro", "login = '" & sLogin & "'")))

xLogin = CStr(Nz(DLookup("login", "tblCadastro", "Nivel = '" & x & "' And Codigo = " & nCodigo)))
yLogin = CStr(Nz(DLookup("login", "tblCadastro", "Nivel = '" & y & "' And Codigo = " & nCodigo)))
zLogin = CStr(Nz(DLookup("login", "tblCadastro", "Nivel = '" & z & "' And Codigo = " & nCodigo)))

If sLogin <> "" Then 'Valida usuário
   
End If
If sSenha = nSenha Then  'Valida senha do usuário
MsgBox "Senha válida", vbInformation, "Testa Login"
    If xLogin = sLogin Then
    DoCmd.OpenForm "Principal", acNormal, , , acFormEdit
    DoCmd.Close acForm, "frmTesteLogin", acSaveYes
    ElseIf yLogin = sLogin Then
    DoCmd.OpenForm "Principal", acNormal, , , acFormAdd
    DoCmd.Close acForm, "frmTesteLogin", acSaveYes
    ElseIf zLogin = sLogin Then
    DoCmd.OpenForm "Principal", acNormal, , , acFormReadOnly
    DoCmd.Close acForm, "frmTesteLogin", acSaveYes
    Else
    Exit Function
    End If
   
Else
MsgBox "Senha inválida", vbInformation, "Testa Login"
End If

End Function

Voltar ao Topo Ir em baixo

avatar

Mensagem em Qui 24 Jul 2014 - 0:06 por good guy

Fabio,
Posta o seu bd ou um exemplo para melhor dirimir sua dúvida.

Voltar ao Topo Ir em baixo

Mensagem em Qui 24 Jul 2014 - 8:23 por Fabio Franco

Obrigado pela ajuda.
Segue meu BD.
O que acontece é que os outros formulários que são acessados via Formulário Principal não ficam, por exemplo, apenas leitura se o usuário não tiver permissões para editar.

Voltar ao Topo Ir em baixo

avatar

Mensagem em Qui 24 Jul 2014 - 11:02 por good guy

Olá Fábio,

Não veio o anexo. Tente por meu email:
eduardovmachado2007@hotmail.com

Voltar ao Topo Ir em baixo

avatar

Mensagem em Qui 24 Jul 2014 - 14:19 por good guy

Olá Fabio,

Siga as seguintes instruções e que servem para todos os usuários do fórum.

1 - Crie um formulário de Login com nome específico referente a cada formulário existente no sistema.
Ex.:   frmTestaLoginPrincipal
         frmTestaLoginOutroForm
         etc...
2 - Em cada formulário de Login altere o nome do formulário que deva ser aberto na função verificaLogin.
Exemplo:
      ................................
If sSenha = nSenha Then   'Valida senha do usuário
MsgBox "Senha válida", vbInformation, "Testa Login"
  
    If xLogin = sLogin Then
    DoCmd.OpenForm "FormENTRADA MATERIAIS", acNormal, , , acFormEdit
    DoCmd.Close acForm, "frmTesteLoginEM", acSaveYes
    ElseIf yLogin = sLogin Then
    DoCmd.OpenForm "FormENTRADA MATERIAIS", acNormal, , , acFormAdd
    DoCmd.Close acForm, "frmTesteLoginEM", acSaveYes
    ElseIf zLogin = sLogin Then
    DoCmd.OpenForm "FormENTRADA MATERIAIS", acNormal, , , acFormReadOnly
    DoCmd.Close acForm, "frmTesteLoginEM", acSaveYes
    Else
    Exit Function
    End If
   
Else
MsgBox "Senha inválida", vbInformation, "Testa Login"
End If
...............................
3 - No evento Form_Open de cada formulário coloque o seguinte código:

Form A:

Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm "frmTesteLoginA", , , , , acDialog
    Cancel = Cancelou()
End Sub

Form B:

Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm "frmTesteLoginB", , , , , acDialog
    Cancel = Cancelou()
End Sub

.................................

4 - Crie um módulo(basFunções e Propriedades de Apoio) com o seguinte código:

Private mfCancel As Boolean
Private mstrUsuário As String
Public Property Get Cancelou() As Boolean
    Cancelou = mfCancel
End Property
Public Property Let Cancelou(ByVal vNewValue As Boolean)
    mfCancel = vNewValue
End Property
Public Property Get UsuárioAtual() As String
    UsuárioAtual = mstrUsuário
End Property
Public Property Let UsuárioAtual(ByVal vNewValue As String)
    mstrUsuário = vNewValue
End Property

Voltar ao Topo Ir em baixo

Mensagem  por Conteúdo patrocinado

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum