Problema com campo login e senha
Amigos, recententemente me deparei com uma situação inusitada, tenho um sistema em delphi que rodava em uma camada, com dbexpress e mysql e fazia o login comparando o valor do edit login e edit senha com valores login_user e Senha_user da tabela usuários sempre funcionou perfeitamente inclusive tinha implementado pra níveis de acesso... funcionava legal mesmo, mas ocorre que atualizei esse sistema para multi-camadas com datasnap e agora esse login nao quer funcionar mais, ele funciona buscando apenas o primeiro registro da tabela, se eu colocar o usuário e senha que se encontram na primeira posição da tabela o sistema faz o login normal, mas se eu por outro registro embora o mesmo atenda os requisitos para logar ele não reconhece e da erro no login. gostaria de saber se isso tem relação direta com o datasnap ou se alguém tem uma ideia melhora para um sistema de login com datasnap
o codigo que uso é o seguine:
procedure TFLogin.SpeedButton1Click(Sender: TObject);
begin
if (Edtlogin.Text = dm.CDSUsuariosLOGIN_USER.Value) and (edtsenha.Text = dm.CDSUsuariosNOVASENHA_USER) then
begin
MessageDlg((Pchar('Seja Bem vindo ' + dm.CDSUsuarios.FieldByName('login_user').AsString + '!!')), mtinformation, [mbOK], 0);
FPrincipal.Showmodal;
FLOGIN.CLOSE end
else
begin
Application.MessageBox('Verifique seu nome de usuário ou senha!!!!',
'Falha no processo de login!', MB_ICONERROR + MB_OK);
end;
end;
simples, mas sempre funcionou bem em apenas uma camada
o codigo que uso é o seguine:
procedure TFLogin.SpeedButton1Click(Sender: TObject);
begin
if (Edtlogin.Text = dm.CDSUsuariosLOGIN_USER.Value) and (edtsenha.Text = dm.CDSUsuariosNOVASENHA_USER) then
begin
MessageDlg((Pchar('Seja Bem vindo ' + dm.CDSUsuarios.FieldByName('login_user').AsString + '!!')), mtinformation, [mbOK], 0);
FPrincipal.Showmodal;
FLOGIN.CLOSE end
else
begin
Application.MessageBox('Verifique seu nome de usuário ou senha!!!!',
'Falha no processo de login!', MB_ICONERROR + MB_OK);
end;
end;
simples, mas sempre funcionou bem em apenas uma camada
Luiz Fagundes
Curtidas 0
Respostas
Natanael Ferreira
30/07/2017
Da maneira que seu código está, será verificado apenas o primeiro registro do Dataset.
Faça um teste com o código abaixo:
Veja este link:
[url:descricao=http://www.activedelphi.com.br/forum/viewtopic.php?
Faça um teste com o código abaixo:
if (Edtlogin.Text <> EmptyStr) and (edtsenha.Text <> EmptyStr) then
if (dm.CDSUsuarios.Locate('LOGIN_USER', Edtlogin.Text, [loCaseInsensitive])) and
(dm.CDSUsuarios.FieldByName('NOVASENHA_USER').Value = edtsenha.Text) then
begin
MessageDlg((Pchar('Seja Bem vindo ' + dm.CDSUsuarios.FieldByName('login_user').AsString +
'!!')), mtinformation, [mbOK], 0);
FPrincipal.Showmodal;
FLOGIN.Close
end
else
begin
Application.MessageBox('Verifique seu nome de usuário ou senha!!!!',
'Falha no processo de login!', MB_ICONERROR + MB_OK);
end
else
begin
MessageBox(Handle, 'Voce deve preencher o nome de usuário e senha', 'Atenção',
MB_ICONERROR + MB_OK);
Edtlogin.SetFocus;
end;Veja este link:
[url:descricao=http://www.activedelphi.com.br/forum/viewtopic.php?
GOSTEI 0