• 16/12/2013
  • admin
  • 0
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 aquí tenemos una clase que nos permitirá evitar preguntar con un if en cada pagina que requiera autenticación. 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 método clsSesionPersona.ObtenerUsuarioSesion(); al instanciarlo en clsSesionPersona clsPersona = clsSesionPersona.ObtenerUsuarioSesion(), se procede a preguntar si viene vacío:
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 Aquí 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 { }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies