PDA

Ver la Versión Completa : Validar Usuario


Kenlyr
25-08-2006, 18:13:49
Hola soy nueva en el foro y mi inquietud es la siguiente:

Quiero hacer una pequeña aplicacion en la cual debe de tener una pantalla de login que valide si el usuario existe en la base de datos. Ya tengo la conexion de la base de datos es una conexion ADO ahora me falta validar ese usuario para que pueda seguir utilizando la aplicacion. De que forma podria validar el usuario solo con el nombre de este que no sea necesario el password pues este esta encriptado en la base de datos y no existe aparentemente un procedure para esa encriptacion que sea visible.


Gracias.

roman
25-08-2006, 18:37:00
No entiendo. ¿Qué importa que esté encriptada la contraseña? Normalmente así se hace y por lo general se compara la contraseña guardada con la encriptación de lo que escribe el usuario, es decir no se desencripta nada. Pero lo que dices de no haber un procedimiento visible de encriptación, ¿qué quiere decir? Digo, es lo mínimo que deberías saber para poder trabajar con esa tabla. En fin, creo que hay algo que no estás explicando correctamente. Si aclaras, con gusto te podremos ayudar.

// Saludos

Kenlyr
25-08-2006, 18:57:16
Hola roman, a lo que me refiero es que me dijeron que debia validar si en BD que es oracle existe un procedure para encriptar el password y asi poder validar el usuario sin problemas en el programa.

ahora bien no existe un procedure en la BD oracle que tenemos aqui no se si tendra alguna funcion interna que encripta el password. Pero idenpendientemente de eso lo que quiero es saber como valido el usuario que ingresara en la aplicacion su numero de tarjeta como esta en la BD y su password. De que manera valido esto? Es decir como hago una funcion que valide si existe o que permita usar la aplicacion y como te mencione anteriormente tengo ya hecha una conexion ADO.

droguerman
25-08-2006, 21:48:55
al menos sabes que método de encriptacion está usando si es uno de los conocidos (MD5, SHA, etc) pues encriptas la contraseña en tu aplicación con ese mismo método y luego comparas el codigo encriptado con el password almacenado en la base de datos

Kenlyr
26-08-2006, 00:25:31
ok. tratare de ver si puede de alguna manera saber cual es el metodo de encriptacion que usan como es una compañia externa que nos proveen la BD y los sitemas.

Otro error que me esta dando la aplicacion de login que estoy haciendo es que me dice que el qyrUsuario : Paramater 'ident' not found, pero si esta como parametro en el query que es el siguiente
SELECT * FROM tabla WHERE IDENT = : 'IDENT'

procedure TFM_Casos.B_AceptarClick(Sender: TObject);
begin
DMcasos.qryUsuario.Close;
DMcasos.qryUsuario.SQL.Text;
DMCasos.qryUsuario.parambyname('ident').AsString := E_Usuario.text;
DMcasos.qryUsuario.Open;

que puede ser que necesito tener o que esta mal?.

roman
26-08-2006, 00:46:24
Debe ir sin comillas y pegado a los dos puntos:


SELECT * FROM tabla WHERE IDENT = :IDENT


// Saludos

Kenlyr
26-08-2006, 00:58:25
Despues de que lo corro step by step y llega al DMcasos.qryUsuario.Open;
el error que me da es de insufficient Memory for this operation :confused:

El codigo completo de ese evento onclick:


procedure TFM_Casos.B_AceptarClick(Sender: TObject);
begin
DMcasos.qryUsuario.Close;
DMcasos.qryUsuario.SQL.Text;
DMCasos.qryUsuario.parambyname('IDENT').AsString := E_Usuario.text;
DMcasos.qryUsuario.Open;

if not DMcasos.qryUsuario.IsEmpty then
begin
Fm_Acceso.Show;
end
else
begin
MessageDlg('Usuario o Contraseña Incorrecta, Intente nuevamente', mterror, [mbOk], 0);
E_Usuario.SetFocus;
end;

end;

Kenlyr
26-08-2006, 22:33:26
Alguien me puede dar una manito, pues esta pantallita de login que estoy haciendo se me esta como frizando cuando la corro no se que pueda ser pues no me da ningun tipo de error al compilar, les copio el codigo de lo que estoy haciendo.


unit CasosFMS;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
type
TFM_Casos = class(TForm)
L_Usuario: TLabel;
L_Password: TLabel;
E_Usuario: TEdit;
E_Password: TEdit;
B_Aceptar: TButton;
B_Cancelar: TButton;
L_Ambiente: TLabel;
ComboBox1: TComboBox;
procedure B_CancelarClick(Sender: TObject);
procedure B_AceptarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FM_Casos: TFM_Casos;
implementation
uses DataModulo, UAcceso;
{$R *.dfm}
procedure TFM_Casos.B_CancelarClick(Sender: TObject);
begin
// Show a confirmation dialog
if MessageDlg('Cancelar Programa. Salir Ahora?',
mtConfirmation, [mbYes], 0)
= mrYes then

Close ;


end;

procedure TFM_Casos.B_AceptarClick(Sender: TObject);
begin
DMcasos.qryUsuario.Close;
DMcasos.qryUsuario.SQL.Text;
DMCasos.qryUsuario.parambyname('IDENT').AsString := E_Usuario.text;
DMcasos.qryUsuario.Open;

if not DMcasos.qryUsuario.IsEmpty then
begin
Fm_Acceso.Show;
end
else
begin
MessageDlg('Usuario o Contraseña Incorrecta, Intente nuevamente', mterror, [mbOk], 0);
E_Usuario.SetFocus;
end;

end;


Y el query hace una simple consulta que es esta:


SELECT * FROM tabla WHERE IDENT = :IDENT


No se la causa de que se quede como freezado :confused:

Lepe
27-08-2006, 10:36:35
Si la SQL la tienes puesta en el inspector de objetos, elimina esta línea, que desde luego no sé que hace:

DMcasos.qryUsuario.SQL.Text;

Saludos

Kenlyr
28-08-2006, 20:34:08
Gracias Lepe, Roman.

Algo que me pasa ahora despues que compilo e introduzco los datos que si son correctos la aplicacion asume como incorrectos y me da el mensaje de password o usuario incorrectos pero si son correctos. Que podria ser que asume algo mal cuando si es introducido bien?