2013-09-26 4 views
15

auf dem lokalen Rechner, i erstellt Beispielprojekt auf mvc4 (Rasierer) und Verzeichnis erstellen „x“ genannt und eine Textdatei „a.txt“ in ihnen.Wie kann man Benutzern den Zugriff auf Unterordner und Dateien verweigern?

http://localhost:64471/x/a.txt 

in meiner Web-Config leugnen ich alle Benutzer dieses config "x" Ordner zuzugreifen:

<location path="x"> 
<system.web> 
    <authorization> 
    <deny users="*"/> 
    </authorization> 
</system.web> 

Nun, wenn Benutzer diese Anfrage senden:

http://localhost:64471/x/ 

es funktioniert und Benutzer zurück zu URL, die in forms-Tag in Web-Konfiguration definiert.

aber, wenn der Benutzer diese Anforderung senden:

http://localhost:64471/x/a.txt 

Textdatei im Browser lesen kann (Browser zeigt Inhalt der Textdatei).

Ich möchte wissen, wie Benutzer zu verweigern, alle Dateien und Unterordner in „x“ Ordner zuzugreifen?

+0

Theoretisch sollte 'path =" x "' alles unter X-Ordner einschränken. Welche Art der Authentifizierung verwenden Sie? * Zum Beispiel, Formularauthentifizierung * Zusätzlich, wo behalten Sie diese 'location' Tag - Anwendung root web.config oder web.config in x-Ordner? – Win

+0

@Win i Form authentication.i Put-Position in root unter Tag – motevalizadeh

+0

auslassen Lage, um alle Dateien verwenden –

Antwort

6

ich mit path="x" in root web.config getestet. Es schränkt alles unter x-Ordner ein; es lässt mich nicht einmal ~/x durchsuchen. Ich werde zur Login-Seite weitergeleitet.

Könnten Sie vollständigen Pfad versuchen, wie dies in root web.config a.txt?

<location path="x/a.txt"> 
    <system.web> 
    <authorization> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 

Wenn es immer noch nicht funktioniert, können Sie versuchen, einen Ordner "web.config inside x" mit folgendem Inhalt zu erstellen.

<?xml version="1.0"?> 
<configuration> 

    <location path="a.txt"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

</configuration> 
10

Ich weiß, dass dies eine alte Frage, aber wenn Sie Probleme haben und mit Text oder HTML-Dateien zu tun, könnten Sie auf this Stackoverflow Frage beziehen möchten.

Kurz gesagt, müssen Sie möglicherweise diese zu Ihrem web.config hinzufügen:

aus
<system.webServer> 
    <modules> 
     <remove name="UrlAuthorization" /> 
     <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> 
    </modules> 
</system.webServer> 

Als kirk Punkte, Dateien wie TXT und HTML-Dateien, die von IIS und nicht ASP.NET behandelt werden, Daher werden die Autorisierungsregeln nicht auf sie angewendet.

Verwandte Themen