2013-12-18 63 views
1

如何在允許用戶「src」映像或下載文件之前驗證Web用戶?還有一些條件是這些文件是公開的。
我想在RegisterGlobalFilters在Global.asax中添加過濾器

過濾器是一樣的東西..
MVC身份驗證文件下載

public void OnFileRequest(string passToken) 
{ 
    //validate passToken 
    if (isValid(passToken)) 
     //allow download 
    else 
    { 
    //authenticate using session 
    if (authenticated) 
     //allow download 
    else 
     //return exception 
    } 
} 

回答

0

使用窗體身份驗證和檢查餅乾。

+0

這些文件在公共位置有一定的條件。我更新了我的問題。 – evilom

+0

這個答案沒有解決OP如何處理二進制文件,而不是ASP.NET運行時管理的頁面或MVC視圖。 – pwdst

1

不是直接鏈接到實際內容,而是存儲將唯一標識符(GUID?)映射到實際文件的字典。然後,您可以使用操作結果來允許下載與否。

實施例:

public ActionResult GetImage(Guid id){ 
    if(SomeFunctionToDetermineIfAllowed()){ 
     return new FileResult(...); 
    }else{ 
     return RedirectToAction("NotFound"); 
    } 
} 
+0

這就是我現在正在做的事情,因此需要花時間來流文件。 – evilom

+0

這是什麼意思,需要時間來流文件?除非您有非常奇怪的/未經過優化的授權,否則對授權的檢查應毫不誇張地說。現在,如果文件的大小不可忽略,那麼下載文件需要一些時間。 – Tommy

+0

是的,如果只有最小的用戶訪問權限,這不是問題。我正在一個多公司的網站上工作,並且會有很多用戶請求來訪問或源文件。流式處理文件會消耗內存資源,並且可能會在將來出現問題。 – evilom

0

存儲在一些文件夾,其可根據要求下載(以驗證用戶)中的文件

爲了實現這一點,請按照步驟。

  • 的文件夾(其中存儲的文件)必須有一個web.config文件或正常web.config文件必須具有定義限制用戶認證以驗證用戶僅。 使用以下xml標籤。登錄的用戶(特定)

    <location path="~/Download_url_page(Folder,File url).aspx"> 
    
        <system.web> 
    
         <authorization> 
    
         <allow users="John"/> // allow John to Download file. 
         <deny users="*"/> // deny others 
    
         </authorization> 
    
        </system.web> 
    
    </location> 
    

原路/登錄的用戶(不具體,但身份驗證的用戶)。下載可能受到限制。

<authorization>

<deny users="?"/> //this will restrict anonymous user access

</authorization>

我希望這能解決你的問題。

+0

這些文件在公開發布時存在一定的條件。我更新了我的問題。 – evilom

+1

這隻適用於通過aspnet註冊的文件類型 –