2016-07-22 3 views
0

Ich schreibe einen HTTP-Standardauthentifizierung-Filter für meine ASP.NET-Anwendung.Hinzufügen von Kopfzeilen zu einer HttpActionContext-Antwort ohne Kurzschließen der Pipeline

Als Teil der Authentifizierung muss ich der Antwort einen Header hinzufügen. Wenn mein Filter aufgerufen wird, ist actioncontext.Response null. Wenn ich die Antwort erstelle, kann ich meine Header hinzufügen, aber dann wird die Pipeline kurzgeschlossen und die eigentliche Controller-Funktion wird nie aufgerufen.

Sollte ich eine andere Möglichkeit verwenden, um meine Autorisierung zu implementieren?

Antwort

0

Bitte benutzen Sie Global AuthenticateRequest und PreSendRequestHeaders Ereignisantwort zu aktualisieren:

public class Global : HttpApplication 
{ 
    // The AuthenticateRequest event signals that the configured authentication mechanism has authenticated the current request. 
    // Subscribing to the AuthenticateRequest event ensures that the request will be authenticated before processing the attached module or event handler. 
    public void Application_AuthenticateRequest(object sender, EventArgs e) 
    { 
     // your authenticate code 
    } 

    public void Application_PreSendRequestHeaders(object sender, EventArgs e) 
    { 
     // your add heard code 
    } 
} 
+0

Vielen Dank für das @Fan. Ich habe diese Idee untersucht, aber es schien wie der falsche Weg. Ich habe es geschafft, einen Aktionsfilter zu verkabeln, der den Header auf dem Weg dorthin generiert und ihn in die Antwort auf dem Weg nach draußen legt. Es scheint, als wäre es der "richtige" Weg, dies in aktuellen Versionen von ASP.NET zu tun. – Neil

Verwandte Themen