ASP.NET MVC - CustomeAuthorize l'action du filtre à l'aide d'un site web externe pour loggin de l'utilisateur

J'ai un CustomeAuthorize action de filtre qui transmet à l'utilisateur de signin page si l'utilisateur n'est pas authentifié. J'ai appliquer ce filtre à des actions ou des contrôleurs.

[CustumeAuthorize]
public ActionResult MyAction()
{
   //do something here
   return View();
}

et le filtre ressemble à ceci:

public class CustomAuthorizeAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        if (!currentUserIsAuthenticated)
        {

            filterContext.Result =
                new RedirectToRouteResult(
                    new RouteValueDictionary{{ "controller", "Account" },
                                                 { "action", "SignIn" },
                                                 { "returnUrl",    filterContext.HttpContext.Request.RawUrl }
                                                });
        }
        else
        {
            base.OnActionExecuting(filterContext);
        }
    }
}

Une fois que j'affecter une valeur à filterContext.Résultat, après l'exécution de filtre finitions, l'exécution est (en quelque sorte?!) redirigé vers le Compte d'action et MyAction n'est pas exécutée. C'est exactement ce que je veux.

Maintenant dire que je veux changer mon CustomAuthorize pour authentifier l'utilisateur par rapport à un site web externe et non pas ma propre SignIn action donc je suis en train de faire quelque chose comme ceci:

public class CustomAuthorizeAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        if (!currentUserIsAuthenticated)
        {
             filterContext.HttpContext.Response.Redirect("http://externalSite.com/login?returnUrl=" + filterContext.HttpContext.Request.RawUrl);
        }
        else
        {
            base.OnActionExecuting(filterContext);
        }
    }
}

Mon problème est qu'après l'exécution de la deuxième version de CustomAuthorize filtre est fini, l'exécution se poursuit à MyAction qui n'est pas ce que je veux! Comment puis-je arrêter l'exécution de MyAction après le filtre dans ce cas?

-Mise à jour- je viens de tomber sur une nouvelle question. Mon application MVC est dans une iFrame et je souhaite le Rediriger vers la force de l'image actuelle comme le cadre principal après la redirection, donc je suis en train de faire quelque chose comme:

string url = "http://externalSite.com/login?returnUrl=" + filterContext.HttpContext.Request.RawUrl;
filterContext.HttpContext.Response.Write("<script type=\"text/javascript\">\ntop.location.href = \"" + url + "\";</script>");

Est-il un moyen de passer un javascript pour RedirectResult()?

OriginalL'auteur xraminx | 2009-05-07