91 007 17 22info@asociacionaepi.es

Manejo de sesión con Asp.Net

Posteado en: blog Iniciado por

Manejo de sesión con Asp.Net

En este tutorial veremos el manejo de la sesión con ASP.NET, pero de una forma diferente, generalmente cuando se crean paginas con cierta seguridad se requiere al uso del Session[], una vez que este se llena la forma convencional de preguntar si el usuario esta o no logueado es en el page load del archivo .cs
if (Session["idusuariobs"] == null) { Response.Redirect("Default.aspx"); }
Con esta sentencia se evita que los usuarios puedan acceder a paginas restringidas sin la correspondiente autenticacion.
Lo tedioso de ello es que si tenemos una aplicación muy grande debemos colocar lo mismo tantas veces como paginas con restricciones allá.
Para evitar esto podemos desarrollar una clase que contenga la clase base Page y sobrescribir el evento OnInit
public abstract class clsPaginaSegura : Page { protected override void OnInit(EventArgs e) { base.OnInit(e); clsSesionPersona clsPersona = clsSesionPersona.ObtenerUsuarioSesion(); if (clsPersona == null) Response.Redirect("~/Login.aspx"); else this.Persona = clsPersona; } }
Como vemos se pregunta por el objeto clsPersona, dicho objeto puede servir incluso para guardar ciertos datos de la persona que se quiere autenticar, que por lo general se guardar en variables generalmente en la misma pagina login de la siguiente manera: Session[idUsuario]; Session[nombresUsuario] entre otros datos,  para evitar esto podemos crear una clase que almacene el objeto usuario en un objeto de sesión de la siguiente manera:

public clsSesionPersona(int intIdUsuario, string strLogin, string strNombre, string strApellido, int intIdPerfil) { IdUsuario = intIdUsuario; Login = strLogin; Nombre = strNombre; Apellido = strApellido; Perfil = intIdPerfil; }


public static clsSesionPersona ObtenerUsuarioSesion() { return HttpContext.Current.Session[strKEY] as clsSesionPersona; }


public static void CrearSesionUsuario(clsSesionPersona Persona) { HttpContext.Current.Session[strKEY] = Persona; }

Si observamos tenemos un método constructor donde llegan los datos de usuario y dos métodos estáticos uno para crear la sesión del usuario y otro para obtenerla, se usa el objeto  HttpContext.Current.Session[strKEY], que sirve para usarlo dentro de la clase.
Hasta aqui tenemos una clase que nos permitira evitar preguntar con un if en cada pagina que requiera autenticacion.
Ahora de una manera mucho mas sencilla solo colocamos el nombre de la clase que contiene obtener usuario sesion. Como funciona esto?, al momento de cargar la pagina la clase clsPaginaSegura pregunta por el metodo clsSesionPersona.ObtenerUsuarioSesion(); al instanciarlo en clsSesionPersona clsPersona = clsSesionPersona.ObtenerUsuarioSesion(), se procede a preguntar si viene vacio
if (clsPersona == null)  Response.Redirect("~/Login.aspx");  else  this.Persona = clsPersona;
Si el objeto viene vacío se procede a redireccionar o a realizar cualquier otro evento que se desee, de lo contrario se puede navegar en la pagina que estuvo restringida
Aqui vemos que con tan solo sustituir el System.Web.UI.Page por clsPaginaSegura ya tenemos una pagina que evita el acceso no permitido.
public partial class Administracion_Seguridad : clsPaginaSegura { }


image_pdfimage_print

Leave a Reply

Uso de cookies

Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación y ofrecer contenidos y publicidad de interés. Al continuar con la navegación entendemos que se acepta nuestra política de privacidad y cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies