inicio de sesion usando el control login asp

5
Inicio De Sesion Usando El Control Login Asp.Net viernes, 18 de mayo de 2012 Buscando en Internet me he dado cuenta que existe poca información(o al menos en español) de como usar el control login de asp.net con una base de datos propia. De hecho la manera que les mostrare tambien puede ser usada creando nosotros mismos los controles de login. El proyecto fue desarrollado usando Visual Estudio 2010 y SqlExpress. La base de datos que usare para este ejemplo llamada Database y solo cuenta con una tablausuarios y con los campos usuario y contraseña. Bueno lo primero que aremos es crear un proyecto web vació con lenguaje de programación c#(esto ya lo tienen que saber hacer por eso no pongo imágenes). Una vez hecho esto se creara el proyecto con la pagina default y el archivo deconfiguración(web.config) en el cual agregaremos lo siguiente. ? 1 2 3 4 5 6 7 8 9 10 11 <connectionstrings> <add name="default" connectionstring="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Da Instance=True" providername="System.Data.SqlClient"> </add></connectionstrings> <authentication mode="Forms"> <forms name="appNameAuth" path="/" loginurl="Login.aspx" defaulturl="Default.aspx" protection="All </forms></authentication> <authorization> <deny users="?"> </deny></authorization> Lo primero seria la conexión a la bd y en el segundo bloque estamos configurando para que todo el sitio este bajo una autentificación por medio de forms. También establecemos cual sera la pagina por defecto y cual la de login, de esta manera si el usuario no esta logueado se redirecciona a la pagina de login. Una ves que hayamos hecho esto lo anterior, agregaremos una clase a nuestro proyecto llamada Autentificacion.cs

Upload: gerardo-de-leon

Post on 31-Dec-2015

14 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Inicio de Sesion Usando El Control Login ASP

Inicio De Sesion Usando El Control Login Asp.Netviernes, 18 de mayo de 2012

Buscando en Internet me he dado cuenta que existe poca información(o al menos en español) de como usar el

control login de asp.net con una base de datos propia.

De hecho la manera que les mostrare tambien puede ser usada creando nosotros mismos los controles de login.

El proyecto fue desarrollado usando Visual Estudio 2010 y SqlExpress.

La base de datos que usare para este ejemplo llamada Database y solo cuenta con una tablausuarios y con los

campos usuario y contraseña.

Bueno lo primero que aremos es crear un proyecto web vació con lenguaje de programación c#(esto ya lo tienen que saber hacer

por eso no pongo imágenes).

Una vez hecho esto se creara el proyecto con la pagina default y el archivo deconfiguración(web.config) en el cual agregaremos

lo siguiente.

?

1234567891011

<connectionstrings><add name="default" connectionstring="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DataBase.mdf;Integrated Security=True;User Instance=True" providername="System.Data.SqlClient"></add></connectionstrings>

 <authentication mode="Forms"><forms name="appNameAuth" path="/" loginurl="Login.aspx" defaulturl="Default.aspx" protection="All"></forms></authentication><authorization><deny users="?"></deny></authorization>

Lo primero seria la conexión a la bd y en el segundo bloque estamos configurando para que todo el sitio este bajo

una autentificación por medio de forms.

También establecemos cual sera la pagina por defecto y cual la de login, de esta manera si el usuario no esta logueado se

redirecciona a la pagina de login.

Una ves que hayamos hecho esto lo anterior, agregaremos una clase a nuestro proyecto llamada Autentificacion.cs

Page 2: Inicio de Sesion Usando El Control Login ASP

Y el código que tendrá nuestra clase sera el siguiente.

?

12345678910111213141516171819202122

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data.SqlClient;using System.Configuration; public static class Autentificacion{public static bool Autenticar(string usuario, string password){    //consulta a la base de datos    string sql = @"SELECT COUNT(*)                          FROM Usuarios                          WHERE usuario = @user AND contraseña = @pass";    //cadena conexion    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))    {        conn.Open();//abrimos conexion

         SqlCommand cmd = new SqlCommand(sql,conn); //ejecutamos la instruccion        cmd.Parameters.AddWithValue("@user", usuario); //enviamos los parametros        cmd.Parameters.AddWithValue("@pass", password);

         int count = Convert.ToInt32(cmd.ExecuteScalar()); //devuelve la fila

Page 3: Inicio de Sesion Usando El Control Login ASP

2324252627282930313233343536

afectada

             if (count == 0)            return false;        else            return true;     }}

 }

Como pueden observar lo único que se hace es crear un método estático de tipo bool que hace la validación del usuario y

devuelve false si no se autentifico y true si se autentifico correctamente.

Ahora lo que aremos es agregar un nuevo web form al cual llamaremos login y dentro de el ponemos el control login.

Ahora nos vamos al código de la pagina login y ponemos lo siguiente.

?

123456789

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e){    if (Autentificacion.Autenticar(Login1.UserName, Login1.Password))    {        FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);

        }}

Page 4: Inicio de Sesion Usando El Control Login ASP

Lo que se hace es usar el evento Authenticate del control Login1 y dentro hacemos una validación de nuestro

método Autenticar de la clase Autentificacion, pasandole como parámetros los datos del control Login1, si la validación se hace

correctamente lo redireccionamos a la pagina default.

Ahora en nuestra pagina default lo único que aremos es agregar un botón con el nombrebtncerrar que lo único que ara es cerrar

la autenticacion. nos vamos al código de nuestra pagina default y ponemos lo siguiente.

?

1234567891011121314151617

protected void Page_Load(object sender, EventArgs e){    //si se autentica mostramos mensaje y nombre de usuario    if (HttpContext.Current.User.Identity.IsAuthenticated)    {        Response.Write("Bienvenido : " + User.Identity.Name);    }}protected void btncerrar_Click(object sender, EventArgs e){    //se borra la cookie de autenticacion    FormsAuthentication.SignOut();

     //se redirecciona al usuario a la pagina de login    Response.Redirect(Request.UrlReferrer.ToString());}

Lo que se hace en este código es mostrar el mensaje bienvenido y el nombre del usuario autentificado en el evento load de la

pagina, y luego en el evento del botón lo que se hace es cerrar el inicio de sesión y redireccionarlo a la pagina

de login nuevamente.

Importante que en los códigos cs de las paginas login y default tiene que ponerse el siguiente espacio de nombres al

principio.

?

12

using System.Web.Security;

Eso seria todo si ejecutamos nuestro proyecto nos tendría que funcionar.