Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Login para aplicación. (https://www.clubdelphi.com/foros/showthread.php?t=58821)

DJerez 02-08-2008 03:06:32

Login para aplicación.
 
Buenas a todos los Delphineros... (Ahora será Tiburoneros?)
(Uso Delphi 7)

Mi consulta de principiante en el tema es la siguiente.

Tengo un formulario que se encarga de cargar datos en una tabla Paradox.

El tema es que necesito que solamente se pueda acceder al programa con una contraseña.

Podrían darme una idea?
Alguien me puede ayudar con eso?
O darme una pista de donde encuentro documentación al respecto?

Es lo último que necesito para terminar el proyecto.:D

Muchas graciassssamigos!

Saludos.

Delphius 02-08-2008 03:23:39

hola DJerez,
Este tema ha sido muy tratado. Por favor, usa el buscador de los foros. Encontrarás buen material. Prueba con palabras claves como login, contraseña, password, usuarios, etc.

Saludos,

DJerez 02-08-2008 04:50:36

Mmm.
 
Si, lo intenté desde el buscador de acá y googleando, pero no encontré nada específico referido a lo que busco. Y quiero terminar rápido, como dije antes es lo único que me falta.

Ya veré como lo resuelvo...

Gracias de todas formas.

Saludos.

egostar 02-08-2008 05:00:55

Cita:

Empezado por DJerez (Mensaje 305235)
Si, lo intenté desde el buscador de acá y googleando, pero no encontré nada específico referido a lo que busco. Y quiero terminar rápido, como dije antes es lo único que me falta.

Ya veré como lo resuelvo...

Gracias de todas formas.

Saludos.

En serio buscaste apropiadamente???

Incluso en la parte baja de este hilo hay uno con lo que buscas

Salud OS

Delphius 02-08-2008 05:08:20

Cita:

Empezado por DJerez (Mensaje 305235)
Si, lo intenté desde el buscador de acá y googleando, pero no encontré nada específico referido a lo que busco. Y quiero terminar rápido, como dije antes es lo único que me falta.

Ya veré como lo resuelvo...

Gracias de todas formas.

Saludos.

DJerez, por si no has leido la guia de estilo, te invito a leerla; sobre todo sabiendo que eres nuevo. Por favor respeta la guia de estilo. Aqui los asuntos no se piden con urgencia.

Te agradecería nos menos indicaras realmente cual es tu problema. Al decirnos que "no es lo que buscas" no solucionamos nada.

Si no expliras mejor tu situación te podríamos ser de ayuda.

Hice una búsqueda y encontré bastantes resultados, algunos de muestras por si deseas saber:

http://www.clubdelphi.com/foros/show...o+contrase%F1a
http://www.clubdelphi.com/foros/show...o+contrase%F1a
http://www.clubdelphi.com/foros/show...o+contrase%F1a
http://www.clubdelphi.com/foros/show...o+contrase%F1a
http://www.clubdelphi.com/foros/show...o+contrase%F1a

Saludos,

DJerez 02-08-2008 20:55:33

Gracias!!
 
"Te pedimos especialmente que colabores en este punto. Para los que ya somos veteranos en el club NOS RESULTA MOLESTO responder la MISMA PREGUNTA una y otra vez, esto CANSA y terminas por NO responder a estas preguntas."


Eso explica mucho el tono de fastidio con el que me respondiste. No es de mala onda que lo digo, ya el hecho que te hayas dignado a responder es un gesto y lo aprecio.

Gracias por los vínculos que me pasaste, no encajaban exactamente con lo que buscaba pero revisando links, dentro de links y de otros links (La mayoría tenían la misma respuesta: "Ya se habló mucho de este tema, usá el buscador...") llegué a un par que me tiraban una idea de como empezar, casualmente los que respondían sin problemas eran novatos... o sea... no estaban fastidiados:) jajaja... o sea... se acordaban que en algún momento no sabían por donde empezar y todos les decían "Usá el buscador..." y cuando encontraron la respuesta fueron gentiles, recordaron su experiencia pasada y respondieron a otros novatos como ellos sin problemas.:)


Ahora, voy a revisar lo que encontré y si me sirve lo posteo acá como finalización de la consulta.

Saludos.


Muchísimas gracias!!!




PD:

Gracias por los consejos.

Delphius 02-08-2008 22:44:29

Cita:

Empezado por DJerez (Mensaje 305335)
"Te pedimos especialmente que colabores en este punto. Para los que ya somos veteranos en el club NOS RESULTA MOLESTO responder la MISMA PREGUNTA una y otra vez, esto CANSA y terminas por NO responder a estas preguntas."


Eso explica mucho el tono de fastidio con el que me respondiste. No es de mala onda que lo digo, ya el hecho que te hayas dignado a responder es un gesto y lo aprecio.

Gracias por los vínculos que me pasaste, no encajaban exactamente con lo que buscaba pero revisando links, dentro de links y de otros links (La mayoría tenían la misma respuesta: "Ya se habló mucho de este tema, usá el buscador...") llegué a un par que me tiraban una idea de como empezar, casualmente los que respondían sin problemas eran novatos... o sea... no estaban fastidiados:) jajaja... o sea... se acordaban que en algún momento no sabían por donde empezar y todos les decían "Usá el buscador..." y cuando encontraron la respuesta fueron gentiles, recordaron su experiencia pasada y respondieron a otros novatos como ellos sin problemas.:)


Ahora, voy a revisar lo que encontré y si me sirve lo posteo acá como finalización de la consulta.

Saludos.


Muchísimas gracias!!!




PD:

Gracias por los consejos.

DJerez si vas a empezar a decir mentiras mejor no digas nada, porque en ningún momento he dicho lo que subrayas con negrita.

Si te he dicho que el tema está tratado es porque es un tema recurrente. Y si decimos que por favor usen el buscador es para que:
1. No decir ya lo dicho
2. evitar aumentar hilos sobre el mismo tema y que terminan siendo redundantes y sobrecargando el servidor.

¿Cómo que no te sirven? Te he pedido amablemente que explicaras tu situación. Si es tan particular tu caso, se puede analizar. Si tu no tienes la intención de explicarte entonces, no podemos asesorarte.

Te voy a pedir amablemente que reconsideres tu postura y que por favor respetes la guia de estilo.

Saludos,

DJerez 02-08-2008 23:45:40

Solucionado.
 
:)Delphius: No miento, en ningún momento dije que vos dijeras eso... como recomendás tanto leer la guía de estilo, pensé que sabrías a que me refería a uno de sus puntos= ·Búsquedas·. Citándote eso era una forma de decirte que te en-tien-do, ok?
Me parece una lástima andar como chicos discutiendo malos entendidos, voy a evitar de ahora en más dar bola a este tipo de pérdidas de tiempo.
Si te fijás hay un par de "jajaja" y un par de ":)"... O sea... no va con mala onda el mensaje, me parece ridículo pensar que alguien va a registrarse en un foro de programación para andar peleando.

Si te sentiste ofendido: Mis disculpas.
Pero aclaro: No tengo mala leche, ni mi intención era molestar a nadie.



Bueno, al tema real en cuestión:
Encontré otra solución (menos elegante, pero más rápida) a mi problema de crear un login.

De todas formas voy a seguir investigando el tema.

Esto es lo que hago:

En el formulario principal.
Código:

Login := TLogin.Create(Self);
Try
Login.ShowModal;
Finally
Login.Free;

Y en el botón OK del logeo.
Código:

    if Clave.Text = 'noteenojes'  then
    begin
ShellExecute(Handle, 'open', 'Ruta\Administracion.exe', '-p1 -p2', nil, SW_SHOWNORMAL)
      end
      Else
    Application.Terminate;

      Close;



Estoy completamente consciente que no es el modo más elegante de hacerlo, ya que lo único que hago es que cuando valide el texto del Edit usando ShellApi abra la aplicación principal y si no que cierre todo.
Por el momento me salva...

Lo único que no logro es que cuando valida la clave y se cierra el login y aparece el form principal, no vuelva a aparecer el login otra vez...
Ya que se crea otra vez al iniciar el form principal.

Pero seguro la respuesta está ahí afuera.

Muchas gracias por los links y los consejos. (No es en tono irónico) Me sirvieron como referencia y como lección para consultas futuras.

Saludos.:):):)

Delphius 03-08-2008 00:03:05

A ver si comprendo.

¿Tienes dos aplicativos? Uno para el logueo y otro que se llama Adminsitración.exe? Porque eso es lo que comprendo al ver tu código:confused:

Si me pudieras aclarar ese puntito podría saber por donde van los tiros.

El llamado a una ventana Login se procede asi, en eso está bien. Una vez que se muestra, y se valida se cierra (y en ciertos casos, destruir).

Para evitar que en futuras ocasiones siga mostrando dicha ventana debes llevar un condicional. De manera simple en algo como esto:

if NOT VerificarQueAntesSeLogueo
then MostrarVentanaLogin

El tema está en que debes guardar en algun archivo (algún ini posiblemente), en el registro de Windows, base de datos... etc algun valor que te sirva de "bandera" y que puedas recuperar al ejecutar la aplicación.

El algoritmo básico es:
1. Inicialmente, en la primera ejecución, el valor para esta "bandera" será establecido para determinar que nunca se logueo.
2. Leer dicha bandera (desde un archivo, etc)
3. Si bandera la bandera no está presente... se muestra el form de login, en otro caso continua con lo necesario.
4. La ventana de login, al momento de validar, cambia el valor de dicha "bandera" por el negado. De este modo cuando se vuelva a ejecutar el programa leerá otro valor y por tanto no mostrará el form.

Dejame decirte que me resulta extraño ese comportamiento, ya que se espera por lo general que cada vez que se ejecute la aplicación se pida la clave o contraseña.

Y por cierto, lo mejor sería que implementes un algoritmo más seguro para la clave. Lo más adecuado sería guardarla en algún lugar encriptada.

Saludos,

DJerez 03-08-2008 01:16:14

Extraño comportamiento...
 
Delphius:
El validador de claves es otro form dentro del mismo proyecto.

Cita:

"Dejame decirte que me resulta extraño ese comportamiento, ya que se espera por lo general que cada vez que se ejecute la aplicación se pida la clave o contraseña."
Si te referís a que cuando le doy la clave y la valida no hace el loop de abrirse la ventana de login otra vez, sin permitirme ver la principal... si es extraño. Pero lo que hace es que cuando valida la clave me abre la ventana del prograna principal y detrás se abre otra vez el login:confused:

1-Ejecutas la aplicación y solo ves el login.:)
2-Si pones una clave no válida o en blanco se cierra todo.:rolleyes:
3-Si la clave es válida, permite ver el formulario "Administración".:D
4-Una vez que te muestra "Administración", inmediatamente se vuelve a abrir el login.:mad:
5-El hecho que me muestre el login otra vez no implica que no pueda trabajar con el formulario principal.:)


Voy a investigar la idea que me das y si... lo que proponés sería más seguro.

Muchas gracias por la ayuda!

Saludos.

Caral 03-08-2008 01:20:43

Hola
Me parece, si no entiendo mal, que la clave esta en el programa.
Si es asi, no me parece una buena alternativa.
Por que no poner la clave en una base de datos y encriptarla en tal caso.
Yo lo que hago es abrir el form principal y en este llamar al loguin, si la clave es correcta se visualiza el form principal, de lo contrario se cierra todo, ah, la clave la mantengo en la base de datos.
Saludos

Delphius 03-08-2008 03:23:24

1 Archivos Adjunto(s)
Hola, a mi lo que me sigue intrigado es el porque ese motivo de lanzar un exe.

Si se trata de mostrar una form... ¿para que ese Shellexecute?:confused:
Me parece que te estas mareando en un vaso de agua. Hay cosas que no me termino de explicar ese comportamiento.

Por favor muestranos el código como lo tienes.

He armado un ejemplo ultra simple de un login. El usuario es "usuario", y la clave es "clave". Si te fijas, una vez que se ingresa, guardo en una variable bandera de que el usuario ha sido validado. Dependiendo de este valor se muestra el form de logueo o no.

En la sección FTP del club hay un ejemplo un tanto más complicado.

Me gustaria que nos detalles explícitamente como estas mostrando tus forms. ¿Usas Show? ¿liberas la memoria una vez que las creas?

Saludos,

Black_Ocean 03-08-2008 11:02:11

Hola [Delphius], sólo le quería avisar de que al parecer olvidó incluir el archivo Unit1.dfm en el zip, que corresponde al formulario de la Unit1.pas, por lo que, el usuario que preguntó no podrá compilar ni tampoco testear el ejemplo que usted ha puesto aquí.

Saludos.

Delphius 03-08-2008 15:28:31

1 Archivos Adjunto(s)
Cita:

Empezado por Black_Ocean (Mensaje 305414)
Hola [Delphius], sólo le quería avisar de que al parecer olvidó incluir el archivo Unit1.dfm en el zip, que corresponde al formulario de la Unit1.pas, por lo que, el usuario que preguntó no podrá compilar ni tampoco testear el ejemplo que usted ha puesto aquí.

Saludos.

Muchas gracias por avisar.
Aqui adjunto el archivo que falta. Disculpen.

Saludos,

Lepe 03-08-2008 19:57:02

¿No tendrás la ventana de login en autocreate Forms? (en delphi, Project -> Options, debes quitarlo de la lista de autocreate y pasarlo a "available forms'.

Apunto este detalle porque dices que se muestra 2 veces (una la creas tú con Login := TLogin.Create(Self) y la otra la crea delphi porque está en formularios autocreados).

Yo el login lo haría así:
Código Delphi [-]
var salir:boolean;
begin

Login := TLogin.Create(Self);
Try
 if Login.ShowModal = mrcancel then
   salir := true;
Finally
Login.Free;
if salir then 
  Application.Terminate
else
  ShellExecute('administracion.exe'.....)

Como se suele decir: "cada cosa para su cosa".

La ventana de login: Cuando el usuario pulsa aceptar y validas la contraseña, deberías asignar la propiedad ModalResult de dicha ventana:
Código Delphi [-]
procedure Tlogin.BotonOkClick(...);
begin
 if  constasena = 'noteenojes' then
   ModalResult := mrOk
 else
  ModalResult := mrcancel
end;

La aplicación principal: muestra la ventana de login y según el resultado termina la aplicación o bien ejecuta la administracion.

Saludos

2-D@monic 04-08-2008 19:52:35

pregunta
 
Cita:

Empezado por Caral (Mensaje 305374)
Hola
Me parece, si no entiendo mal, que la clave esta en el programa.
Si es asi, no me parece una buena alternativa.
Por que no poner la clave en una base de datos y encriptarla en tal caso.
Yo lo que hago es abrir el form principal y en este llamar al loguin, si la clave es correcta se visualiza el form principal, de lo contrario se cierra todo, ah, la clave la mantengo en la base de datos.
Saludos

Una pregunta acerca del login............ para almacenar las contraseñas, utilizas una tabla en donde almacenes el id y el password? o utilizas los login's en entrada al manejador (o sea creas usuarios en el manejador dándoles roles).

DJerez 05-08-2008 06:33:33

Súper gracias!
 
Ante todo gracias por la paciencia y la atención dispensada, es lo mejorcito que he encontrado en foros y las ayudas sobran, cosa que no veo mucho en otros (No me refiero a los de programación solamente). Y gracias por ayudar a un novato en programación a aprender un poco más.

Delphius:

Acabo de bajar el (Los).zip del ejemplo de login, lo probé y me resulta interesante la idea y mucho más práctica que la de abrir el .exe con el propio... .exe (:confused:), respecto al código no lo miré con detenimiento pero algo que no tomé en cuenta antes es esto:

Código:

  inc(intento);
  ...
  if (intento = 5)
    then Application.Terminate;

O sea, terminar la aplicación en "x" intentos fallidos.
Absolutamente mucho mejor de lo que estaba intentando.

Gracias.

[Lepe]:

Probé la idea que das del login me funcionó sin problemas... pero:
Cuál es el problema con esta opción que es la que implemento ahora?
(Si bien el login no aparece más al validar la clave...)

Si ingreso la clave, ingreso al programa, si la dejo en blanco o me equivoco, cierra todo... pero que pasa si presiono ALT+F4? Catrina de chanes!!! Se cierra SOLO el login y me abre la aplicación principal!
Intenté probando las soluciones de que no se permita usar ALT+F4 durante la ejecución de la aplicación, pero no logro hacerla funcionar a esa solución, pero eso está fuera de este tópico.

Gracias.

[Caral]
:

Si, precisamente, la pass está en el programa. Y la idea de volcarla en una base de datos y encriptarla hace que sea más seguro. Algo que no tomo en cuenta para la aplicación que estoy haciendo ya que no requiere demasiada seguridad, solo restringir el acceso con Clave (Ni siquiera usuario) a la aplicación Administración. De todas formas voy a leer al respecto.

Gracias.

//***********************************************
En conclusión:
El tema de que el tópico está bastante hablado (Debo darle la razón a Delphius) es cierto, el tema es que no encontré algo paso a paso como para darme cuenta en donde meter un código y en donde meter el otro (O mi capacidad mental no está a pleno:rolleyes:). Ahora que estuve viéndolo directamente en el Delphi, puedo comprenderlo más.
Estoy más que agradecido por las ideas y la ayuda de todos, hasta la de Black_Ocean, que me evitó un post reclamando la Unit1 del proyecto de Delphius!

Voy a volcarme a trabajar con la opción de Delphius, me evita el dolorcito de ojos frente al monitor viendo como lidiar con el ALT+F4... como siempre, seguro debe ser una tontera.

GRACIAS

Saludos.

cjmatador 05-08-2008 19:05:29

djerez

yo te recomiendo que si es uno de tus primeros programas en delphi
crees primero el form que te pide el login y password y luego añadas el form principal, yo tenia los mismos problemas al inicio pero de a poco los iras resolviendo, no desesperes.

En cuanto a delphius amigo paciencia con djerez, creo que no tengo muchos posts en el foro pero leo con mucha atencion todas las ayudas que ya se encuentran en algun foro y generalmente con ellas resuelvo mis dificultades, y en la gran mayoria tus posts me ayudaron mucho saludos sigue adelante.

UN DICHO

CON PACIENCIA Y SALIVITA, UN ELEFANTE SE TIRA UNA HORMIGUITA.

SALUDOS.

PD. TIRA=F.O.L.L.A.R.
SIN MALA HONDA NI FALTAR EL RESPETO A NADIE


La franja horaria es GMT +2. Ahora son las 13:05:51.

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