Entregare un pequeño tutorial para autenticar usuarios basado en formularios. Usaremos Visual Studio 2005 mas Framework .NET 2.0, ademas le daremos un vistazo al manejo de variables de sesiones. Manejaremos los usuarios del sitio web via web.config.

Primero que nada crearemos un nuevo sitio web en lenguaje Visual Basic. Le agregaremos una pagina que llamaremos login.aspx en el cual le agregaremos el control de Login que trae la Barra de Herramientas.

Los colores y fuente de letras de la caja del Login queda a gusto del programador🙂

Luego abriremos nuestro archivo web.config y agregaremos el siguiente codigo que le indicara a nuestro sitio web que todas las paginas necesitaran auntentificarse antes ser accesadas.

<authorization>

<denyusers=?/></authorization>

<authenticationmode=Forms>

<formsname=frmpath=/loginUrl=login.aspxprotection=Alltimeout=30>

<dentialspasswordFormat=Clear>

<username=user01password=pass1/>

<username=user02password=pass2/>

</credentials>

</forms>

</authentication> 

Este codigo se puede colocar despues de la etiqueta

<system.web>

En el codigo anterior agregamos 2 usuarios que seran los permitidos a entrar al sitio asi como sus contraseñas.

Ahora iremos con la pagina logina.spx. En el evento “Login1_Authenticate” agregaremos este codigo:

If FormsAuthentication.Authenticate(Login1.UserName.ToString, Login1.Password.ToString) Then
	Session.Add(“id_user”, “12345678-9”)
	FormsAuthentication.RedirectFromLoginPage(Login1.UserName.ToString, Login1.RememberMeSet)
End If

Aqui hicimos 2 cosas: Primero verificar contra el web.config el usuario y password que ingresamos. Si estan correctos, crearemos una variable de sesion llamada id_user que tendra el valor 12345678-9, y luego redireccionaremos a la pagina Default.aspx que sera la pagina por defecto. Tambien funcionara si queremos entrar a otra pagina del sitio en particular (lo veremos mas adelante).

Ahora iremos sobre el codigo VB de la pagina Default.aspx. Vamos a mostrar algunos datos que ya tenemos por el metodo de autenticacion que estan en las credenciales.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Response.Write(“Pagina Principal:”)

'verificamos autenticacion
If User.Identity.IsAuthenticated Then
'desplegamos la informacion de las credenciales
displayCredentials.Text = “Bienvenido : ” + User.Identity.Name + “” + _
“Tipo de Autentificacion Usada : ” + User.Identity.AuthenticationType + ““
End If

End Sub

A la pagina default.aspx le agregaremos un boton para salir de la zona de aunteticacion. El boton lo denominaremos SignOut y le asinaremos el sgte. codigo:

    Protected Sub cmdSignOut_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSignOut.Click
    'borrar sesion
    Session.Clear()
    Session.Abandon()

    'delete the users auth cookie and sign out
    FormsAuthentication.SignOut()
    'redirect the user to their referring page
    Response.Redirect(Request.UrlReferrer.ToString())

    End Sub

Aqui cerraremos la sesion de variables y la credencial que nos dio el sitio y nos envia automaticamente a la pagina de login.

Ahora agregaremos una pagina que llamara reportes.aspx, la cual sera llamada por un hipervinculo desde la pagina default.aspx. Esta pagina mostrara ademas de los datos del usuario, el valor de la variable de sesion. Pero antes debemos agregar una seccion para nuestras variables de sesion en el web.config para su uso. Agregamo lo sgte. en la seccion Session State:

<sessionState
mode=”InProc”
stateConnectionString=”tcpip=127.0.0.1:42424″
sqlConnectionString=”data source=127.0.0.1;Trusted_Connection=yes”
cookieless=”false”
timeout=”1″
/>

Nuestras variables duraran 1 minuto para diferenciarla del timeout del login que es de 30 minutos.
En la pagina de reportes, ademas agregaremos un boton para volver a la pagina principal, se llamara btnVolver y el codigo de la pagina sera el sgte:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Response.Write(“menu de reportes de gestion:”)

    If User.Identity.IsAuthenticated Then
    'datos de la credencial
    Response.Write(“Bienvenido : ” + User.Identity.Name & “” + _
    “Tipo de Autentificacion Usada : ” + User.Identity.AuthenticationType + ““)
    End If
    Response.Write(“id usuario = ” + Session(“id_user”))
    End Sub

    Protected Sub btnVolver_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnVolver.Click
    Response.Redirect(“default.aspx”, False)

    End Sub

Cuando ejecutemos nuestro sitio web, nos pedira auntenticarnos, al darles los datos correctos veremos la pagina default.aspx, con los datos del usuario. Al hacer click en el hipervinculo que nos llevara a la pagina reportes.aspx y mostrara nuestra variable de sesion.

Si esperan mas de 1 minuto en esta pagina y luego hacen un refresh, veran que el valor de nuestra variable desaparece por el minuto que le dimos de vida. A continuacion la secuencia del sitio.

Al ir a la pagina de los reportes

Y si esperan mas de 1 minuto, el valor de la variable de sesion desaparece.

Prueben y comenten si tienen problemas.

Links:
C#: Autenticar Usuarios con Formularios y Bases de Datos