Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Validar Usuario Y Contraseña No Funciona (https://www.clubdelphi.com/foros/showthread.php?t=69565)

microbiano 25-08-2010 23:28:57

Validar Usuario Y Contraseña No Funciona
 
Hola foro les comento lo siguiente.

resulta que hace unos dias tuvve que formatear la maquina y despues de haber terminado copies el respaldo del sistema que hice, hata ahi sin problemas el problema viene que cuando quiero validar el usuario y contraseña lo que antes funcionaba ahora ya no.


el usuario lo valida con el usuario de la base de datos sqlserver 2000 es un usuario con los mismos persmisos que el usuario sa.


dejo el codigo

Código Delphi [-]
procedure Tf_acceso.BaceptarClick(Sender: TObject);
begin
if trim(f_acceso.txtnombre.Text)='' then
  begin
    application.MessageBox('Proporciona Nombre de usuario','Error',mb_ok + mb_iconerror);
    f_acceso.txtnombre.SetFocus;
    f_acceso.txtnombre.Color:=clyellow;
    exit;
  end;
if trim(f_acceso.txtcontrasena.text)='' then
begin
    application.MessageBox('Contraseña del usuario','Error',mb_ok + mb_iconerror);
    f_acceso.txtcontrasena.SetFocus;
    f_acceso.txtcontrasena.Color:=clyellow;
    exit;
end;

fmodulo.con.Close;
fmodulo.con.ConnectionString:=
'Provider=MSDASQL.1;' +
        'Persist Security Info=True;' +
        'User ID=' + f_acceso.txtnombre.Text + ';' +
        'Password=' + f_acceso.txtcontrasena.Text + ';' +
        'Data Source=' + f_acceso.txtbase.Text;
try
    fmodulo.con.Connected:= true;
    MessageDlg('Se ha conectado correctamente a la BD: ' +
    txtbase.Text + '.', mtInformation, [mbok], 0);
    //creo y abro el form del menu
    Application.CreateForm(Tfmenu, fmenu);
    fmenu.ShowModal;
    f_acceso.Hide;
  except
    on E:EOleException do begin

    if (E.ErrorCode = -2147217843) then
    begin
      application.MessageBox('Nombre de Usuario y/o Contrasena Incorrectos'+chr(13)+' '+chr(13)+'Intentelo Nuevamente','Error',mb_ok + mb_iconerror);
      f_acceso.txtnombre.Text:='';
      f_acceso.txtcontrasena.Text:='';
      exit;
    end;
    if (E.ErrorCode = -2147467259) then
    begin
      application.MessageBox('Hay un Error de Configuracion con la base de datos'+CHR(13)+'pongase en contacto con el Administrador','Error',mb_ok + mb_iconerror);
      exit;
    end;
  end;
end;
end;

espero alguien me pueda echar una manita que ya busque el error y aparentemente nada

look 25-08-2010 23:46:11

hola, ¿exactamente donde esta el problema?, ¿te da algun error?, ¿ cual es?

microbiano 25-08-2010 23:49:46

Gracias
 
El problema esta en que ingresando cualquier informacion en el tedit de usuario y contraseña, entra a la ventana de menu, es decir no valida el usuario y contrasena.

es decir si escribes una x en usuario y una x en contraseña aun asi entra

look 25-08-2010 23:57:23

Cita:

Empezado por microbiano (Mensaje 374547)
EL PROBLEMA ESTA EN QUE INGRESANDO CUALQUIER INFORMACION EN EL TEDIT DE USUARIO Y CONTRASEÑA, ENTRA A LA VENTANA DE MENU, ES DECIR NO VALIDA EL USUARIO Y CONTRASENA.

ES DECIR SI ESCRIBES UNA x EN USUARIO Y UNA X EN CONTRASEÑA AUN ASI ENTRA

prueba poniendo un BreakPoint al inicio del codigo, de ese modo vas viendo con mas detalle el curso que toma., ¿ejecutas el codigo con o sin debug?

afunez2007 25-08-2010 23:59:25

segun lo ke veo, la opcion "Persist Security=True" es la que hace que valide cualquier cosa, ya que cuando te conectas a un sql server con el management studio y le activas esa opcion utiliza las credenciales de windows y no te solucita ninguna seguridad.

Prueba a ponerla en false, y ves que resulta

Saludos

microbiano 26-08-2010 00:09:06

sin funcionar
 
look. ya puse el breakpoint y sin fuincionar, en cuanto a que lo ejecuto con debug o sin debug lo hago de las dos formas y no me muestra algun error

afunez2007

ya puse "Persist Security=false" y me sigue sin funcionar.

umm al parecer no entiendo que es por que el ejecutable si me valida la informacion.

ahora bien hay alguna otra opcion para validar usuario y contraseña con usuario de base de datos..


de antemano gracias por las prontas respuestas

afunez2007 26-08-2010 00:15:20

Cita:

Empezado por microbiano (Mensaje 374559)
look. ya puse el breakpoint y sin fuincionar, en cuanto a que lo ejecuto con debug o sin debug lo hago de las dos formas y no me muestra algun error

afunez2007

ya puse "Persist Security=false" y me sigue sin funcionar.

umm al parecer no entiendo que es por que el ejecutable si me valida la informacion.

ahora bien hay alguna otra opcion para validar usuario y contraseña con usuario de base de datos..


de antemano gracias por las prontas respuestas

En lo personal no valido la seguridad del programa con la seguridad misma de la base de datos, mas bien utilizo una tabla de usuarios creada por mi y en la cual creo campos para validar los permisos de acceso que los usuarios tendrean para las diferentes funciones del sistema.

microbiano 26-08-2010 00:20:51

sin funcionar
 
cuando utilizas una tabla para la seguridad del sistema, encriptas los datos de usuario contraseña y rol?, si es asi con que componente problamente cambie a esa opcion ya que toda la seguridad se la dejaba a la base de datos y hasta ahora no he tenido problemas.

afunez2007 26-08-2010 00:25:40

Cita:

Empezado por microbiano (Mensaje 374563)
cuando utilizas una tabla para la seguridad del sistema, encriptas los datos de usuario contraseña y rol?, si es asi con que componente problamente cambie a esa opcion ya que toda la seguridad se la dejaba a la base de datos y hasta ahora no he tenido problemas.

Puedes utilizar Jedi VCL, alli hay unos componentes para encriptar datos, en la paleta Jv Encrypt, Compress.

Saludos

Enan0 26-08-2010 02:33:52

Perdon pero nose que tipo de componente usas para la conexion pero en las propiedades no tendras

Código Delphi [-]
modulo.con.LoginPrompt=true

2-D@monic 26-08-2010 03:54:23

?
 
Cita:

Empezado por afunez2007 (Mensaje 374562)
En lo personal no valido la seguridad del programa con la seguridad misma de la base de datos, mas bien utilizo una tabla de usuarios creada por mi y en la cual creo campos para validar los permisos de acceso que los usuarios tendrean para las diferentes funciones del sistema.

Una pregunta.... con qué info de usuario te conectas a la BdD? tal vez todos tus clientes comparten el mismo nombre de usuario y contraseña.

microbiano 26-08-2010 17:09:48

sin funcionar
 
gracias por reponder

Enan0

los componente que uso son ADO.

y el modulo.con.LoginPrompt=true, realmente lo tengo en false.


2-D@monic



cada usuario tiene que ocupa el sitema tiene un usuario en la base de datos
que es donde otorgo los permisos, de lectura escritura y ejecución.

afunez2007 26-08-2010 17:12:45

Cita:

Empezado por 2-D@monic (Mensaje 374612)
Una pregunta.... con qué info de usuario te conectas a la BdD? tal vez todos tus clientes comparten el mismo nombre de usuario y contraseña.

El usuario para conectarse a la bd, esta ya en la programacion y si tienes razon es uno comun, pero el usuario final no lo conoce, el solo conoce su usuario y clave que utiliza pero de la tabla que yo he creado para este efecto.

microbiano 27-08-2010 16:41:24

Gracias por las respuestas
 
ya busque alguna solucion y no encuentro asi que al parecer la mejor opcion es crear una tabla de usuario son los permisos en ella. asi que voy a considerar esta opcion,


La franja horaria es GMT +2. Ahora son las 15:38:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi