Wenn Der Controller.OnAuthorization() gibt void zurück, dann wie kann ich den Zugriff verweigern?

Hätte ich erwartet, dass es return 'true' oder 'false'...

Habe ich überschrieben OnAuthorization in meinen Controller und basiert auf eine fehlende oder ungültige HTTP-Header-Wert, den ich zurückgeben möchte, 403 forbidden, aber ich kann nicht scheinen, um herauszufinden, wie um alles zurückzugeben, was von OnAuthorization so, dass es tatsächlich zu stoppen, der rest von der Steuerung ausgeführt werden.

Was soll ich tun?

Mein Erster Versuch, unten war ein großer fail, ich denke, Deny() ausgeführt wird aber es passiert nichts...

public class AuthController : Controller
    {
        protected override void OnAuthorization(AuthorizationContext filterContext)
        {
            if (string.IsNullOrEmpty(filterContext.HttpContext.Request.Headers["Authorization"]))
                Deny();

            string authString = filterContext.HttpContext.Request.Headers["Authorization"];

            base.OnAuthorization(filterContext);
        }

        private ActionResult Deny()
        {
            HttpContext.Response.StatusCode = 403;

            return Content("Access Denied", "text/plain");
        }
    }

UPDATE aussieht, diese hat den trick, einen Grund, warum dies möglicherweise ein schlechter Ansatz?

    if (string.IsNullOrEmpty(filterContext.HttpContext.Request.Headers["Authorization"]))
    {
        filterContext.Result = Content("Access Denied", "text/plain");
        filterContext.HttpContext.Response.StatusCode = 403;

        base.OnAuthorization(filterContext);
    }

UPDATE WIEDER ok also jetzt funktioniert es nicht mehr... ich lege einen Haltepunkt und sah, wie Sie Schritt IN diese if-Anweisung, und man die Basis.OnAuthorization (...) - Aufruf, und Schritt rechts wieder raus... warum sollte es in der if-Anweisung, wenn es nicht ausgeführt wird? Wenn es ausgeführt wurde, warum würde der Aufruf base.OnAuthorization(...) nicht zu Ende, Dinge zu früh?

  • Sie sollten Ihre post zu AKTUALISIEREN, wie Sie eine Antwort auf Ihre eigene Frage.
  • funktioniert es nicht mehr 🙁
InformationsquelleAutor MetaGuru | 2011-07-22
Schreibe einen Kommentar