ASP.NET MVC - CustomeAuthorize Filteraktion mithilfe einer externen website für den Login in den Benutzer -

Ich habe eine CustomeAuthorize action filter, der leitet den Benutzer zu signin Seite, wenn der Benutzer nicht authentifiziert wurde. Ich habe diesen filter anwenden, um Aktionen oder Controller.

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

und der filter sieht wie folgt aus:

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);
        }
    }
}

Sobald ich einen Wert zuweisen filterContext.Ergebnis nach der Ausführung des filters abgeschlossen, die Ausführung ist (irgendwie?!) Weiterleitung der SignIn-Aktion und MyAction nicht ausführen. Das ist genau das, was ich will.

Nun sagen, ich will meine CustomAuthorize um den Benutzer zu authentifizieren gegen eine externe Webseite und nicht meine eigenen SignIn Aktion, so bin ich etwas wie dieses:

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);
        }
    }
}

Mein problem ist, dass nach der Ausführung der zweiten version von CustomAuthorize filter abgeschlossen ist, wird die Ausführung fortgesetzt, um MyAction das ist nicht das, was ich will!!! Wie verhindere ich die Ausführung von MyAction nach filter in diesem Fall?

-Update- ich kam gerade über eine neue Ausgabe. Mein MVC-Anwendung in einem iFrame und ich möchten, dass die Umleitung zu zwingen, den aktuellen frame als Haupt-frame-Umleitung, so bin ich etwas wie:

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

Ist es ein Weg, um pass ein javascript, um RedirectResult()?

InformationsquelleAutor xraminx | 2009-05-07
Schreibe einen Kommentar