2013-09-26 2 views
15

sul computer locale, ho creato un progetto di esempio su mvc4 (rasoio) e creato una directory denominata "x" e inserito un file di testo "a.txt" al suo interno.come negare all'utente di accedere a sottocartelle e file?

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

nel mio web config nego tutto all'utente di accedere alla cartella "x" da questa configurazione:

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

Ora, se all'utente di inviare questa richiesta:

http://localhost:64471/x/ 

funziona e restituisce l'utente all'URL definito nel tag forms in web config.

ma quando l'utente invia questa richiesta:

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

può leggere file di testo in del browser (browser mostra i contenuti del file di testo).

voglio sapere come negare all'utente di accedere a tutti i file e le sottocartelle nella cartella "x"?

+0

In teoria, 'percorso =" x "' dovrebbe limitare tutto sotto la cartella x. Che tipo di autenticazione usi? * Ad esempio, Autenticazione modulo * Inoltre, dove mantieni il tag 'location' - root web.config dell'applicazione o web.config nella cartella x? – Win

+0

@Win utilizzo il modulo authentication.i inserire la posizione nella radice sotto il tag motevalizadeh

+0

omettere la posizione per includere tutti i file –

risposta

6

Ho provato con path="x" nella directory principale web.config. Limita tutto sotto la cartella x; non mi lascerà nemmeno sfogliare ~/x. Vengo reindirizzato alla pagina di accesso.

Potresti provare il percorso completo di a.txt come questo in root web.config?

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

Se ancora non funziona, puoi provare a creare un web.config all'interno della cartella x con il seguente contenuto.

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

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

</configuration> 
10

So che questa è una vecchia questione, ma se si hanno problemi e trattare con i file di testo o HTML, si potrebbe desiderare di fare riferimento a this domanda StackOverflow.

In breve, potrebbe essere necessario aggiungere questo al vostro web.config:

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

Come kirk punti fuori, come ad esempio i file .txt e .html sono gestite da IIS e non ASP.NET, quindi le regole di autorizzazione non sono applicate a loro.