public ActionResult Login(Usuario usuario)
        {
            eliminar_privilegios(this);
            ObjectParameter exito          = new ObjectParameter("Resultado", 0);
            bool            error_conexion = false;

            try
            {
                db.SP_LoginUsuario(usuario.CorreoInstitucional, usuario.Contrasena, exito);
            }
            catch (EntityException)
            {
                error_conexion = true;
                exito.Value    = false;
            }

            if (IdentidadManager.obtener_correo_actual() != null)      // Si esta autenticado
            {
                return(RedirectToAction("Index", "Home"));
            }
            else if ((bool)exito.Value == true) // Si se pudo autenticar (correo y contrasenna validos).
            {
                // Note que si se cambia la contrasenna no se crea ninguna sesion.

                var recuperar_contrasena = db.Usuario.Where(m => m.CorreoInstitucional == usuario.CorreoInstitucional).ToList();
                if (recuperar_contrasena.ElementAt(0).RecuperarContrasenna == true)
                {
                    Session["recuperar"] = usuario.CorreoInstitucional;
                    return(RedirectToAction("CambiarContrasenna"));
                }
                else
                {
                    crear_sesion(usuario.CorreoInstitucional);
                    return(RedirectToAction("Cambiar", "Perfil"));
                }
            }
            else    // Si hay error en la autenticacion
            {
                // Desplegar mensaje de error personalizado.
                string mensaje_error = "";
                if (error_conexion == true)
                {
                    mensaje_error = "Error de conexión al servidor";
                }
                else
                {
                    mensaje_error = "Usuario o contraseña inválidos";
                }

                ModelState.AddModelError("ErrorLogin", mensaje_error);


                // Devolverse a la misma pagina de Login informando de que hay un error de autenticacion.
                return(View(usuario));
            }
        }