2015-02-24 70 views
0

如何才能爲絕對路徑(例如www.mysite.it/namefile.pdf)設置c#MVC查看文件僅用於已驗證用戶?使用方法FormsAuthentication.Authenticate()進行驗證。感謝您的支持。僅針對已登錄用戶的C#MVC視圖文件

+0

是否要在網站的根目錄中限制訪問所有文件? Coudl將它們移動到子文件夾中? – Carl 2015-02-24 20:31:28

回答

0

我認爲更恰當的方式來做到這一點是:

www.mysite.it/f={filename} 

而在你的控制器使用[Authorize]檢查,如果用戶進行身份驗證。如果用戶通過身份驗證,則允許他查看或下載文件。

下面的代碼可以幫助你瞭解:

//Ensure that the user is authenticated 
[Authorize] 
public class HomeController : Controller 
{ 
    string DefaultFileFolder = "C:/Files"; 

    public ActionResult Index(string f) 
    { 
     //File request 
     if (!String.IsNullOrWhiteSpace(f)) 
     { 
      var filePath = System.IO.Path.Combine(DefaultFileFolder, f); 
      var mimeType = "text/plain"; 

      return File(filePath, mimeType); 
     } 

     return View(); 
    } 
} 
+0

你好,你給我舉個例子嗎?恐怕我不明白什麼解決方案 – Mic 2015-02-25 08:20:27

+0

非常感謝,它完美的作品,你必須添加您的代碼與@JasonCoder建議修改web.config – Mic 2015-02-25 15:42:17

0

據我知道這樣做是爲了通過ASP.NET靜態內容路由請求的唯一途徑。通常你不這樣做,因爲IIS本身在服務這些類型的資源方面效率更高。通過設置 runAllManagedModulesForAllRequests =」 true」或取出 ‘managedHandler’前提

在IIS 7這樣做可以:

this excellent article,您可以強制靜態內容的請求由經過ASP.NET爲UrlRoutingModule。

根據您的需要,您可能希望根據理查德的建議做更多的事情。或許像this

+1

你好@JasonCoder感謝您的答覆;我添加在web.config中此代碼' <的requestFiltering> <添加段= 「allegati」/> ',但我如何顯示文件到用戶登錄到該網站?因爲現在我添加了代碼,即使用戶登錄也沒有看到該文件 – Mic 2015-02-25 12:03:55