2011-01-02 7 views
1

Ich lese gerade über die Implementierung meiner eigenen HTTP-Handler für ASP.NET 4.0 und IIS7. Das sieht wirklich cool aus. Ich möchte spezielle Verarbeitung für ZIP-Dateien und es scheint, als wäre ein HTTP-Handler die perfekte Lösung.Access Forms-Authentifizierung von separaten HTTP-Handler

Was mir jedoch Probleme bereitet ist, dass der Handler in einer separaten Baugruppe sein muss. Wie kann ich von dieser Baugruppe aus auf den Rest meiner Anwendung zugreifen?

Insbesondere möchte ich feststellen, ob der Benutzer authentifiziert ist und umleiten sie auf die Anmeldeseite, wenn sie nicht sind. Aber User.Identity.IsAuthenticated usw. ist nicht von meinem Handler verfügbar.

(Ja, ich weiß, es gibt Möglichkeiten, diese Prozedur ohne HTTP zu nähern, aber sie scheinen nicht angemessen für meine Bedürfnisse.)

Antwort

1

User.Identity.IsAuthenticated usw. nicht zur Verfügung von meinem Hundeführer.

Die ProcessRequest Methode gibt Ihnen den aktuellen HTTP-Kontext, aus dem Sie bestimmen können, wenn der Benutzer authentifiziert ist:

public void ProcessRequest(HttpContext context) 
{ 
    if (!context.User.Identity.IsAuthenticated) 
    { 
     // the user is not authenticated 
    } 
    ... 
} 
+0

Wissen Sie, ich dies nur realisiert, wenn Sie zu Bett letzte Nacht gehen. Aber ich verstehe nicht, wo dies festgelegt ist, wenn es mein eigener benutzerdefinierter HTTP-Handler ist. Weißt du zufällig, wie es eingestellt wird, bevor mein Handler angerufen wird? Andernfalls, wenn dies funktioniert und ich IIS7 verwenden kann, um die Datei meinem Web-Handler aus web.config zuzuordnen, sollte das alles sein, was ich brauche. Ich werde das für ein paar Stunden nicht mehr versuchen können. –

+0

@ Jonathan, es spielt keine Rolle, dass es sich um einen eigenen benutzerdefinierten Handler handelt. Es ist eine Baugruppe, die Teil derselben Anwendung ist. Der aktuell angemeldete Benutzer wird durch Lesen des vom Client gesendeten Authentifizierungscookies festgelegt. –

Verwandte Themen