2014-09-29 12 views
8

Ich habe die Notwendigkeit, einen gesamten Ordner von statischen HTML-Dateien zu sichern. Die Absicht ist, dass ein Benutzer nicht auf diese Dateien zugreifen kann, wenn sie nicht authentifiziert sind und die notwendige Rolle haben.Autorisierung für statische Dateien in ASP.NET MVC w/Owin

Wir haben Cookie-basierte Authentifizierung eingerichtet mit OWIN, aber egal was ich versuche, ich kann nicht scheinen, die richtige Kombination von Änderungen zu erkennen, um Authentifizierung für den Ordner zu machen.

Das erste Problem ist, dass IIS ASP.NET komplett überspringt und nur die Dateien bereitstellt. Ich denke, es gibt wahrscheinlich einen Weg um runAllManagedModulesForAllRequests auf true zu setzen. Aber wohin gehe ich von dort?

Ich habe versucht, Elemente in der Web.config zu stopfen, um die richtigen Rollen zu erfordern, aber es führt nur dazu, dass JEDE Anfrage verweigert wird (vermutlich, weil es nicht den richtigen Cookie oder etwas untersucht).

Ich habe meinen ganzen Tag damit verbracht und ich bin dabei, meinen Verstand zu verlieren.

Hat jemand dieses Problem gelöst?

+0

Erstellen Sie eine Klasse, die 'IHttpHandler' implementiert und legen Sie Ihre Sicherheit dort. Siehe http://stackoverflow.com/q/1146652 –

+0

In diesem Szenario würde ich meine Rolle-Überprüfung und solche in den RouteHandler setzen? Ich bin nicht positiv, aber das scheint nicht der richtige Ort für so etwas zu sein. –

+1

Dann dienen Sie die Datei von einer Standard-Controller-Methode. So würde ich es wahrscheinlich machen. Sie können das mit der von Ihnen gewünschten Sicherheit laden, und die MVC-Götter würden zufrieden sein. –

Antwort

3
  1. IIS dient statische Dateien, wenn Sie stoppen wollen diese Sie statische Standard-Dateihandler entfernen und als jede Anfrage ist serverd von MVC/OWIN.
  2. als in Ihrem Controller statische Datei-Handling und Autorisierung machen: hört/map Route, wo statische Dateien

befinden statische Standard-Dateihandler fügen Sie diese web.config Datei zu entfernen:

<configuration> 
    <system.webServer> 
     <handlers> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
</configuration> 
+0

Wie bekomme ich das mit Winkel arbeiten? Meine Web-App ist in Angular 1.6 mit Typescript geschrieben. Wenn ich das StaticFile-Modul entferne, wird die index.html nicht bedient und alles versaut. Ich muss nur den Zugriff auf den Ordner ** Attachments ** und die statischen/Mediendateien des Servers auf autorisierte Benutzer beschränken. Irgendwelche Ideen? – Nexus

+0

werfen Sie einen Blick, dies kann Ihnen helfen https://Stackoverflow.com/a/11258217/715224 –

+0

Sie sind ein Freund! Vielen Dank, lasst mich mal schauen und es versuchen. Herzlichen Dank. – Nexus