2009-03-09 11 views
2

Angenommen, ich habe einen virtuellen Ordner/topFolder/in IIS7, und in diesem Ordner kann jede Datei angezeigt werden, die in einem Browser (XML, HTML, SWF, doc usw.) angezeigt werden kann "nicht verwaltete" Ressourcen aus der IIS-Perspektive. Bevor ich die Anfrage erhalte, Dateien unter dem Ordner zu öffnen, muss ich einige Sitzungsvariablen überprüfen, um zu sehen, ob der Benutzer eine "Lizenz" für den betreffenden Unterordner und die betreffende Datei hat.Statische Dateien und Authentifizierung in ASP.net

Ich habe versucht, ein Modul mit IHttpModule und IReadOnlySessionState Schnittstellen zu implementieren, aber die Sitzung ist immer Null auf dem AcquireRequestState-Ereignis, wenn die Datei "statisch" und nicht IIS verwaltet (wie Aspx, Ashx usw.).

Wenn ich einen benutzerdefinierten HttpHandler verwende, bekomme ich die Sitzung, aber ich muss auch implementieren, wie der Inhalt an die Antwort gesendet wird. Bearbeiten: Da der Benutzer die Datei nicht herunterlädt, möchte ich nur, dass IIS die Datei wie mit seinem StaticFileModule bereitstellt. Der Handler/Module sollten wirklich ein StaticFileModuleWithAuthorizationHook sein ...

Also wirklich tun möchte ich folgendes: 1. Anfrage/topFolder/*: Check-Sitzung und Lizenzen usw. a) Wenn ok, weiterhin dient Datei b) Wenn nicht in Ordnung, unterbrechen Sie die Anfrage oder senden Sie einfach FORBIDDEN als Antwort.

Hoffe, dass jemand helfen kann.

Antwort

1

Sie sollten in der Lage sein, dies über den httphandler zu handhaben, der einfache Weg besteht darin, die eingebauten Methoden zu verwenden, um die Datei an den Benutzer zu senden, wenn sie Zugriff haben.

This article (am unteren Rand) zeigt ein Beispiel, wie dies zu tun ist.

+0

Danke, aber das ist ein bisschen anders. Imaginge die URL http://myserver.com/topFolder/something/foo.html Ich werde es nicht herunterladen, ich werde die Datei liefern, aber erst nachdem ich die Sitzung überprüft und einige Datenbank-Roundtrips gemacht habe. Es ist im Grunde ein offenes virtuelles Verzeichnis, das benutzerdefinierte Sicherheit haben sollte. –

+0

In diesem Fall, tun Sie einfach eine Antwort.WriteBytes und schreiben Sie die Datei, setzen Sie nicht die Kopfzeile, um die Content-Disposition einzustellen und Sie sollten in Ordnung sein! –

+1

Das wird nicht mit zufälligem Inhalt arbeiten. Wenn ich das mit einer SWF-Datei versuche, weiß der Browser nicht, wie man rendert, und rendert es nur als Binärzeichen. Ich möchte wirklich nur, dass IIS nach meinen Prüfungen so rendert, wie es funktioniert, und nicht darauf achten, wie der Browser zufälligen Inhalt rendert. –

Verwandte Themen