2012-05-29 22 views
5

yılında ben kullanıcı yetkili olmadan indirmek mümkün istemiyorum benim İçerik klasöründe bazı dosyalar var. Bir kullanıcının adres çubuğuna İçerik/{dosyaadı} yazarak dosyayı almasını nasıl engellerim?Koruma klasörler MVC

cevap

3

birkaç olasılık vardır. İlki web.config <location> etiketini kullanarak içine oluşur: Bir başka olasılık kimsenin (örneğin App_Data klasörü gibi) erişebileceğiniz bir klasörün içinde bu dosyaları koymak ve daha sonra bir kontrolör eylemi sahip olmaktır

<location path="Content"> 
    <system.web> 
     <authorization> 
      <deny users="?" /> 
     </authorization> 
    </system.web> 
</location> 

o [Authorize] özniteliği ile dekore edilecek bu dosyaları hizmet verecek.

+0

gibi doğrudan bağlantı yoluyla dosyaya erişebilir. yapılandırma? – user517406

+0

' öğesi içinde ve' 'dışında. Kökte. –

+1

Tamam, teşekkürler kullanıcıların reddetmesi gerektiği gibi çalışmıyor mu? " /> :) – user517406

0

Eh tek yön C:\temp\files gibi bir şey için C:\inetpub\wwwroot

değişim onu ​​altında kalmadan bunun yerine, IIS bağlamı dışında ona sahip olmaktır. senin DB

belge adı ile ilişkili bir GUID olması ve dosya bağlantısını görüntülemek için GUID kullanın. Denetleyiciniz eylem sadece, GUID kabul dosya adı almak ve sonra yanıt olarak dosyayı hizmet verecek yılında

.

1

benim için çalışmaz.

<configuration> 
    <appSettings> 
    ... 
    </appSettings> 
    <system.web> 
    ... 
    </system.web> 
    <system.webServer> 
    ... 
    </system.webServer> 
    <location path="Content"> 
     <system.web> 
      <authorization> 
       <deny users="?" /> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 

herhangi uygulama sayfasını erişemez, benim MVC 4.0 uygulaması, giriş ve çıkış çalıştırmak, ama yine de bu web bulunan olacağını

http://localhost:80966/Content/Files/home.jpg