Páginas

jueves, 24 de noviembre de 2011

Autenticación en C#

Algo super sencillo de hacer es un proceso de Autenticación, sin embargo muchas personas lo hacen dentro del hilo de ejecución del sistema, poniendo como Pantalla principal el formulario de la contraseña y luego ocultándolo, ya que si se cierra se termina el hilo de ejecución del sistema.
Para hacerlo de una mejor manera podemos hacer lo siguiente…
En nuestro proyecto tenemos el Program.cs, el cual es el principal, agregamos un formulario principal [frmPrincipal] y uno de autenticación [frmAutentica] y hacemos lo siguiente:
en Program.cs tenemos un código parecido a este:
   1: namespace Comercial

   2: {

   3:     static class Program

   4:     {

   5:         /// <summary>

   6:         /// Punto de entrada principal para la aplicación.

   7:         /// </summary>

   8:         [STAThread]

   9:         static void Main()

  10:         {

  11:             Application.EnableVisualStyles();

  12:             Application.SetCompatibleTextRenderingDefault(false);

  13: /*Es en este lugar donde hay que insertar el código que valida el usuario*/

  14:             Application.Run(new frmPrincipal());

  15:         }

  16:     }

  17: }

El código que metemos en ese lugar es el que usamos para invocar nuestro formulario de autenticación, en este formulario validamos el usuario y la clave y damos como resultado  DialogResult.Ok en caso que la autenticación sea exitosa. además para mantener en Memoria, nombre, id y otros datos del usuario podemos crear una clase que guarde estos datos, y luego invocarla. el código puede ser algo parecido al siguiente:


   1: DatosUsuario user = new DatosUsuario();// Aqui se los datos del usuario

   2: frmAutentica auth = new frmAutentica();

   3: auth.user = user;

   4: DialogResult dr;

   5: dr=auth.ShowDialog();

   6: if (dr == DialogResult.OK)

   7: {

   8:     // En el form frmPRincipal creamos una sobrecarga del constructor para que nos acepte el parametro user

   9:     Application.Run(new frmPrincipal(user));

  10: }

Espero esta contribución les ayude.