lunes, 28 de diciembre de 2009

ASP.NET Autenticación por Formulario (Parte I)

Puedes descargar el código aquí.

En este post voy a explicar cómo crear una aplicación Web en la que existirá una sección segura. La autenticación vía formulario se suele utilizar para securizar el acceso a una determinada página (o grupo de páginas) a usuario no autenticados.

Las páginas a las que deseas restringir el acceso pueden ser las páginas de administración de tu sitio Web. Sigue los pasos siguientes:


Paso 1 - Creación de página de login:

- Crea un nuevo proyecto desde Visual Studio (Sitio Web o Aplicación Web)

- Añade una página "Login.aspx".

- Agrega un control asp:login a la página "Login.aspx".




- Implementación del evento Authenticate del control de Login.


protected
void Login1_Authenticate(object sender, AuthenticateEventArgs e)

{

bool authenticated = AuthenticateMe(Login1.UserName, Login1.Password, Login1.RememberMeSet);


if (authenticated)

{


FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);

}

}

private
bool AuthenticateMe(string userName, string password, bool rememberUserName)

{

//Se trata de un hardcode, en un caso real la validación se hará contra una base de datos

string localUserName = "admin";

string localPassword = "1234";

if (userName.Equals(localUserName) && password.Equals(localPassword))

{return true;}

else{return false;}

}


Paso 2 - Modificación del Web.config:

- En este paso se modifica el Web.config para indicar la url por defecto del sitio (defaultUrl), la url de la página de login (loginUrl), se indica si la sesión segura espira (slidingExpiration) y el timeout en minutos.


<system.web>

<authentication
mode="Forms">

<forms
defaultUrl="default.aspx"
loginUrl="~/login.aspx"
slidingExpiration="true"
timeout="20"></forms>

</authentication>

<authorization>

</authorization>

</system.web>


Paso 3 - Creación de un directorio seguro:

Dentro de este directorio se encontrarán aquellas páginas cuyo acceso se quiere restringir.

- Crea una nueva carpeta dentro de tu proyecto (p.e: Secure).

- Dentro de este directorio añade una página (p.e: Administracion.aspx).

- Añade un Web.config dentro de esta carpeta e incluye el siguiente contenido en el mismo.


<?xml version="1.0" encoding="utf-8"?>

<configuration>

<appSettings/>

<connectionStrings/>

<system.web>

<authorization>

<deny users="?"/>

</authorization>

</system.web>

</configuration>


Paso 4 - Ejecuta tu aplicación:

Selecciona la página Administracion.aspx como página de inicio y pulsa F5. Serás redireccionado a la página de Login, una vez hayas introducido las credenciales correctas, la página de login re redireccionará hasta la página de Administracion.aspx

Puedes descargar el código aquí.

5 comentarios:

  1. genial genial!! le doy un diez al post!!

    ResponderEliminar
  2. Pues no tan genial, porque no va. En cambio si lo hago creando un login propio y con FormsAuthenticationTicket si va. Genio?

    ResponderEliminar
  3. Y sabse por qué no va, genio?. Porque la contraseña tiene que tener un mínimo de 6 caracteres, genio

    ResponderEliminar
  4. Muy buen post, tambien funciona con variables de session para redireccionar si la autentificacion fue falsa. Saludos.

    ResponderEliminar
  5. buen aporte una pregunta como cambio la ruta de redireccion en ves de que diga acount/login.aspx

    que diga Sesion.aspx

    ResponderEliminar