Uno de los aspectos importantes a considerar durante el desarrollo de una aplicación es la seguridad de la misma. La seguridad de una aplicación abarca diferentes aspectos entre los cuales podemos destacar los siguientes: 1) Aspectos relacionados con la prevención de errores de ejecución y "cuelgues" inesperados. 2) Aspectos relacionados con evitar la pérdida de información y errores en el proceso de entrada y salida de datos. 3) Aspectos relacionados con el control de acceso a los usuarios según su jerarquía o función dentro de la organización.
El ejemplo que hoy pongo a su disposición tiene que ver con los aspectos relacionados al control de acceso para los usuarios, y presenta una forma bastante simplificada de crear una función que muestre un cuadro de diálogo para ingresar un nombre de usuario y una contraseña. La función también busca el usuario en un archivo de datos y verifica que la contraseña ingresada coincida con la que está almacenada en el sistema.
La función ChkUser( ), encargada del control de acceso a los usuarios devuelve el valor .T. (Verdadero) si el usuario existe y la contraseña es correcta, y devuelve el valor .F. (Falso) si el usuario y/o la contraseña son incorrectos.
En el caso del ejemplo, la función ChkUser( ) impide al acceso al sistema mientras no se ingrese un nombre de usuario válido y/o una contraseña correcta; si salimos del cuadro de diálogo sin ingresar la información requerida, la función devuelve un valor falso (.F.) y se detiene la ejecución del programa. En cambio, si el valor devuelto es verdadero (.T.), se continúa la ejecución del programa y se muestra la ventana principal de la aplicación maximizada, con su correspondiente menú, fondo verde y con una imagen centrada en la ventana (que puede ser el logo de la empresa).
La aplicación utiliza tres funciones API de Windows que son:
FINDWINDOW( ): Permite buscar una ventana específica y obtener el manejador interno que le asigna Windows, almacenándolo en una variable
SHOWWINDOW( ): Permite mostrar una ventana de diferentes formas utilizando el manejador que obtuvimos mediante la función FINDWINDOW( ). El programa utiliza esta función para maximizar la ventana principal de la aplicación.
SENDMESSAGE( ): Esta función se utiliza para indicar a Windows que debe utilizar asteriscos cuando ingresemos datos en un CONTROL EDITBOX específico.
Es posible desplazarse entre los controles utilizando las teclas de dirección o la tecla "TAB".
Es posible desplazarse entre los controles utilizando las teclas de dirección o la tecla "TAB".
A continuación les dejo algunas capturas de la aplicación:
En lo personal, al crear una aplicación que inicia solicitando un nombre de usuario y una clave de acceso, modifico el archivo "miaplicacion.ini" que debe ir en la carpeta "Windows", y en los parámetros relacionados con la ubicación de la ventana, establezco la posición de la ventana principal en las coordenadas (1,1), y los parámetros que manejan el alto y el ancho de la ventana, también los establezco en 1, de tal modo que la ventana principal de la aplicación queda oculta y solo se ve la ventana que solicita el usuario y la password. Si no se ingresan datos de un usuario válido y se finaliza la aplicación, la ventana principal nunca llega a mostrarse en la pantalla, por el contrario, si ingresamos un usuario válido, la ventana principal que se ha mantenido oculta se muestra maximizada. A modo de ejemplo les dejo el archivo WINSGCOM.INI correspondiente a un sistema de gestión comercial que desarrollé con dBFast.
Los parámetros "windowx" y "windowy" permiten establecer la posición inicial de la ventana, y los parámetros "windowcx" y "windowcy", el alto y el ancho de la ventana respectivamente.
Pueden descargar el ejemplo directamente desde MEGAUPLOAD:
MEDIAFIRE
FILESERVE
OBS: Tanto el nombre de usuario como la clave son "admin", todo en minúsculas y por supuesto, sin comillas.










0 comentarios:
Publicar un comentario en la entrada