2011-10-20 99 views
3

我有一個網站,我也有被保護在瀏覽器中查看其內容的「UserFiles」目錄:asp.net - 阻止下載特定文件

此虛擬目錄不允許的內容是上市。

的問題是,我有一些文件在這裏,如果你知道文件的名稱,例如:

http://example.com/UserFiles/file.ppt

你可以下載它。

有沒有什麼辦法來保護這也從web.config?或者,如果用戶試圖訪問這個,做一個重定向到登錄頁面?

請注意,我不使用表單身份驗證,但是自定義登錄和Windows身份驗證處於開啓狀態。

感謝,

更新:我會嘗試這樣的時刻:http://www.dotnetcurry.com/ShowArticle.aspx?ID=270

回答

0

當有人需要下載這些文件中的一個,你只是重定向到一個類似於你一個網址給了那裏?

另一種方法是定義一個返回文件的頁面,然後您可以將所需的任何權限檢查放入。使用此方法還允許您將該用戶文件夾完全移到Web文件夾之外,因此這些網址根本不可用。

如:

C:\UserFiles\ 
C:\inetpub\MyWebFolder\ 

你只需要確保Web應用程序在其下運行的用戶帳戶具有對C適當的權限:\ UserFiles \文件夾中。

+0

嗨克里斯,謝謝你的回答。不幸的是,移動文件夾將意味着代碼中的很多重構,所以我試圖找到一個替代方案...是的,我給登錄用戶提供簡單的URL ... –

+0

在這種情況下,IHttpHandler選項嘗試是我能想到的唯一的其他選擇。 –

2

如果你仍然想通過web.config要做到這一點,你web.config文件應該有這下httpHandlers部分:

<system.web> 
    <httpHandlers> 
     <add verb="*" path="*.ppt" type="System.Web.HttpForbiddenHandler" /> 
    </httpHandlers> 
</system.web> 

這將阻止所有.PPT文件。

+0

是的,但是這也會阻止他們登錄用戶... –

+0

我不知道如果這將工作,如果一個目錄被指定爲路徑? – jpierson