/// <summary>
        /// Método que autentica al usuario con las credenciales ingresadas. Si se comprueban correctas, lo redirige a su pantalla de inicio (según su rol); sino, le permite un nuevo intento de corregir sus credenciales
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btn_login_Click(object sender, EventArgs e)
        {
            A_USUARIO u = new A_USUARIO();
            A_PERSONA p = new A_PERSONA();

            TB_PERSONA persona = p.getPersonaByCorreoE(txt_email.Text);     //Si las credenciales son correctas, se busca la información de la persona

            if (persona == null)
            {
                lbl_errors.Attributes.Remove("hidden");
                lbl_errors.Text = "Usuario o contraseña incorrectos";
                return;
            }

            TB_USUARIO usuario = u.getUsuarioByPersona(persona.ID_PERSONA);               //A partir de la persona se extrae el resto de la información del usuario

            //Verificando las credenciales
            if (!u.Autenticar(txt_email.Text, txt_password.Text))
            {
                lbl_errors.Attributes.Remove("hidden");
                lbl_errors.Text = "Usuario o contraseña incorrectos";
                return;
            }

            //Verificando el estado de la sesion
            int estado_sesion = u.getEstadoSesion(usuario.ID_USUARIO, Session.SessionID);

            //Tomando acciones segun resultado de la comprobacion:
            switch (estado_sesion)
            {
            case A_USUARIO.SESION_EXISTENTE_NO_EQUIVALENTE:
                //Sesion abierta, del que no es propietario. Preguntar si cerrar
                btn_restart_sesion.Visible = true;
                //btn_login.Visible = false;
                txt_password.Attributes.Remove("required");
                Session["old_email"] = txt_email.Text;
                return;

            case A_USUARIO.SESION_NO_EXISTENTE:
                //Sesion nueva
                u.updateUsuarioAsAutenticado(usuario.ID_USUARIO, Session.SessionID, true);
                redirigir(usuario.ID_USUARIO, usuario.ID_ROL);
                break;

            case A_USUARIO.SESION_EXISTENTE:
                //Sesion abierta, pero del que es propietario
                redirigir(usuario.ID_USUARIO, usuario.ID_ROL);
                break;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                A_ROL     r = new A_ROL();
                A_USUARIO u = new A_USUARIO();

                if (Session["usuario"] == null)
                {
                    Response.StatusCode = 403;
                    Response.RedirectToRoute("Login");
                    return;
                }

                switch (u.getEstadoSesion(((MV_DetalleUsuario)Session["usuario"]).ID_USUARIO, Session.SessionID))
                {
                case A_USUARIO.SESION_EXISTENTE:
                    lbl_tipo_usuario.Text = r.getRolById(((MV_DetalleUsuario)Session["usuario"]).ID_ROL).NOMBRE;
                    break;

                default:
                    Response.StatusCode = 403;
                    Response.RedirectToRoute("Login");
                    break;
                }

                // Buscando si el usuario está autorizado para acceder a la página solicitada
                var path = Request.Url.AbsolutePath;    //Extrayendo URL

                if (!isAuthorized(path))
                {
                    Response.StatusCode      = 403;
                    Response.SuppressContent = true;
                    Response.RedirectToRoute("Login");
                }

                //Finalmente, si el usuario está autorizado, cargará sus notificaciones
                notificaciones = A_NOTIFICACION.ObtenerNotificacionesNuevas(((MV_DetalleUsuario)Session["usuario"]).ID_USUARIO);
                A_NOTIFICACION.ActualizarNotificacionesLeido(((MV_DetalleUsuario)Session["usuario"]).ID_USUARIO);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                btn_restart_sesion.Visible = false;
                txt_password.Attributes.Add("required", "true");

                //Comprobando si no posee una sesion activa

                if (Session["usuario"] != null)
                {
                    A_USUARIO u = new A_USUARIO();

                    //Verificando el estado de la sesion
                    int estado_sesion = u.getEstadoSesion(((MV_DetalleUsuario)Session["usuario"]).ID_USUARIO, Session.SessionID);

                    if (estado_sesion == A_USUARIO.SESION_EXISTENTE)
                    {
                        redirigir(((MV_DetalleUsuario)Session["usuario"]).ID_USUARIO, ((MV_DetalleUsuario)Session["usuario"]).ID_ROL);
                    }
                }
            }
        }