2012-05-29 66 views
5

我在我的Content文件夾中有一些文件,我不希望用戶無需授權即可下載。如何通過在地址欄中輸入... Content/{filename}來防止用戶訪問文件?保護MVC中的文件夾

回答

3

有幾種可能性。第一個包括到你的web.config使用<location>標籤:

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

另一種可能是把這些文件的文件夾內,其中沒有人可以訪問(例如像App_Data文件夾),然後有一個控制器動作這將爲那些將用[Authorize]屬性裝飾的文件提供服務。

+0

會在哪裏這個位於網絡訪問文件。配置? – user517406

+0

在''元素內部和''外。它在根。 –

+1

好的,謝謝,沒有得到它的工作,因爲它應該是<拒絕用戶=「?」 />不是 :) – user517406

0

好方法之一是在C:\inetpub\wwwroot

它更改爲類似C:\temp\files有它的IIS環境之外,因此而不是他們的。

在您的數據庫中有一個GUID與文檔名稱相關聯,並使用GUID顯示該文件的鏈接。

在您的控制器操作中,您只需接受GUID,獲取文件名,然後在響應中提供文件。

1

它不適合我。

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

我跑我的MVC 4.0應用程序,登錄和註銷,無法訪問任何應用程序頁面,但仍然可以通過直接鏈接像

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