Perfiles de Usuarios ASP.NET & MVC

Una de las dudas más habituales en los foros de ASP.NET, es como mantener una variable disponible para un usuario. Lo primero que se nos puede pasar por la cabeza es utilizar la sesión para guardar esta información, pero desde ASP.NET 2.0 tenemos otras alternativas más adecuadas para estas cosas y además nos puede servir tanto para usuarios anónimos, como para usuarios autentificados.

!! No tenemos que utilizar la sesión para todo !!!  tanto nos sirve para ASP.NET como para ASP.NET MVC

Usuarios autentificados.

Una vez el usuario se ha autentificado, se asocia el perfil a la identidad del usuario en el contexto actual system.web.httpcontext.user

Usuarios anónimos

El perfil para los usuarios anónimos no está habilitada de forma predeterminada y hay que especificarlo de forma explícita.

Para poder tener estas propiedades del perfil habilitadas para los usuarios anónimos ASP.NET crea una cookie donde se establece una identidad única para el usuario y poderlo identificar cada vez que el usuario acceda a la página web. Esta cookie tiene una caducidad de 70 días y se renueva automáticamente cuando el usuario accede al sitio.

Si necesitamos controlar cuando un usuario pasa de ser anónimo a usuario autentificado, podemos controlar este paso en el momento que el usuario se autentifica y se lanza el evento MigrateAnonymous incluido en el fichero Global.asax.

Tipos Soportados

Si no se especifica el tipo del dato que queremos mantener, por defecto esta propiedad se guardara como string, pero podemos guardar tipos escalares (texto, números, fechas) tan solo especificando el tipo en la configuración de la propiedad.

Para trabajar con tipos complejos o propios tenemos que especificar el tipo de serialización que queremos utilizar.

Nos tenemos que acordar de marcar nuestras clases como serializables para no tener problemas al guardar los datos.

namespace Demo.Profile
{
    [System.Serializable]
    public class Persona
    {
        public string Nombre { get; set; }
        public int Edad { get; set; }
        public DateTime Cumple { get; set; }
    }
}

Y cuando especificamos el tipo en el fichero de configuración no nos tenemos que olvidar el namespace.

Proveedores

Otra de las ventajas para utilizar los perfiles de usuario es que se basan en los famosos proveedores de ASP.NET y podemos definir donde guardar esta información, en base de datos, un fichero xml, etc.

1000_18_249_Aa478948_asp2prvdr0101en-usMSDN_10

Para este ejemplo he utilizado la tabla de sqlExpres que viene por defecto con nuestras aplicaciones ASP.NET.

TablasProfile

Utilizar los Perfiles de Usuario

Una vez que tenemos todo configurado ya podemos comenzar a utilizar los perfiles según nuestras necesidades.

Lo primero que podemos necesitar es actuar dependiendo si el usuario actual es un usuario anónimo o es un usuario autentificado Profile.IsAnonymous y establecer el valor de las variables que tenemos configurado en el perfil, finalmente nos tenemos que acordar de guardar la modificaciones y listos.

Guardamos tipos escalares:

GuradarProfile

Guardamos tipos complejos:

PersonaProfile

Luego dispondremos de esta información para toda la aplicación y para este usuario.

RecuperarProfile

Con esto lo tenemos todo de una manera fácil y persistente. Recordar que NO todas las aplicaciones ASP.NET viven de las sesiones y desde ASP.NET2.0 disponemos de esta alternativa que podemos utilizar incluso con las aplicaciones MVC.

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s