5 Stimmen

Wie man den Download-Zugriff nur auf einen bestimmten Ordner in App_Data in asp.net mvc erlaubt

Ich habe das in meiner web.config:

Ich glaube, ich gehe das falsch an, aber ich scheine nicht den richtigen Weg zu finden, um das zu googeln. Ich möchte den Download-Zugriff nur auf diesen Ordner 'UserFiles' gewähren. Ich muss dies über die web.config tun, da die Live-Umgebung auf Azure sein wird und ich keine Maschine haben werde, um dies über RDP in IIS zu ändern.

9voto

Tommy Punkte 38742

Zuerst, wenn Sie ein Azure-Webrollen und nicht Azure-Websites verwenden, sollten Sie diese Daten in einem Blob speichern. Zweitens, müssen diese Dateien gesichert werden, so dass nur authentifizierte Benutzer darauf zugreifen können (oder sogar Benutzer nur auf ihre eigenen Dateien zugreifen können?).

Angenommen, jeder kann jede Datei vom Server herunterladen. Wenn das der Fall ist, erstellen Sie ein Verzeichnis namens UserFiles unterhalb von Inhalt. Jetzt können Sie einfach auf diese Dateien verlinken wie folgt

Mein Dateititel

Wenn sie jedoch hinter einer Authentifizierungsmethode gesichert sind, wird es kompliziert. Sie möchten nicht, dass jeder diese Elemente herunterladen kann. Also, lassen Sie uns ein paar Schritte unternehmen, um sie zu schützen.

1. Erstellen Sie einen Ordner namens UserFiles im obersten Level Ihrer Lösung.

2. In Ihrer web.config, sorgen wir dafür, dass niemand darauf zugreifen kann

3. Erstellen Sie einen MVC-Controller, nennen wir ihn Dateien, den Sie tatsächlich verwenden werden, um die Dateien an den Benutzer zu liefern. Hier erstellen wir eine Aktion namens Download, die eine Datei-ID annimmt (vorausgesetzt, Sie speichern Dateiinformationen in der Datenbank)

public FileResult Download(int id){
   //Logik durchführen, um zu prüfen, ob der Benutzer Zugriff auf diese Datei hat
   //Wenn Zugriff, die Datei zurückgeben
   //Ansonsten einen 404-Fehler zurückgeben
}

Jetzt wird Ihr Dateidownload-Link so aussehen

@Html.ActionLink("Mein Dateititel", "Download", "Dateien", new{id = Model.Id})

MVC und Ihr Code haben Zugriff auf den UserData-Ordner, während ein externer Webbenutzer dies nicht hat. Verwenden Sie den Controller/Aktion, um Ihren Inhalt zu schützen

5voto

MikeSmithDev Punkte 15661

Dateien in App_Data werden vom Designer nicht für den Endbenutzer bereitgestellt.

App_Data wird verwendet, um Daten Dateien zu speichern. Aus dem MSDN:

App_Data enthält Anwendungsdatendateien einschließlich .mdf-Datenbankdateien, XML-Dateien und anderen Datenspeicherdateien. Der App_Data-Ordner wird von ASP.NET verwendet, um die lokale Datenbank einer Anwendung zu speichern.

Der Inhalt von Anwendungsordnern... wird nicht als Antwort auf Webanforderungen bereitgestellt, kann jedoch aus dem Anwendungscode heraus zugegriffen werden.

Es wäre ziemlich schlecht, wenn Leute Sachen wie Ihre Datenbank aus App_Data herunterladen könnten.

Sie müssen den UserFiles-Ordner außerhalb von App_Data verschieben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X