/*Este método sirve para detectar donde estas entrando. Esto se ejecuta antes que el ActionResult
         * correspondiente. Es bueno, por ejemplo, para preguntar por la sesión, traer una id, o lo que sea
         * que se use para ver si el user esta logeado o no (SIN TENER QUE REPETIR LO MISMO EN CADA MÉTODO)*/
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            string controllerName = this.ControllerContext.RouteData.Values["controller"].ToString();

            Debug.WriteLine("====Estas en el controlador: " + controllerName);

            if (Session["Usuario"] == null)
            {
                string  token   = filterContext.HttpContext.Request.Params["token"]?.ToString();
                Usuario logeado = UsuarioServicio.LoginPorToken(token);
                if (logeado != null)
                {
                    Session["Usuario"] = logeado;
                    ViewBag.Usuario    = Session["Usuario"];
                }
                else
                {
                    string    urlIntentada = Request.Url.ToString();
                    UrlHelper u            = new UrlHelper(this.ControllerContext.RequestContext);
                    string    urlNueva     = u.Action("Login",
                                                      "Home",
                                                      new { ReturnUrl = urlIntentada });
                    filterContext.Result = Redirect(urlNueva);
                }
            }
            else
            {
                //villereada rápida
                Usuario usuario = Session["Usuario"] as Usuario;
                ViewBag.Usuario    = UsuarioServicio.ObtenerUsuarioPorId(usuario.Id);
                Session["Usuario"] = ViewBag.Usuario;
            }
        }