2014-09-29 79 views
8

我需要保護靜態HTML文件的整個文件夾。目的是用戶不能訪問這些文件,除非它們被認證並且具有必要的作用。ASP.NET MVC中的靜態文件授權w Owin

我們已經使用OWIN設置了基於cookie的身份驗證,但無論我嘗試了什麼,我似乎都無法弄清楚需要對文件夾進行身份驗證的更改的正確組合。

第一個問題是IIS完全跳過ASP.NET並僅僅提供文件。我認爲可能通過將runAllManagedModulesForAllRequests設置爲true來解決這個問題。但我從哪裏去?我試過在Web.config中的填充元素來要求正確的角色,但它只是導致每個請求被拒絕(大概是因爲它沒有檢查正確的cookie或其他東西)。

我已經度過了整整一天的時間,我即將失去理智。

有沒有人解決過這個問題?

+0

創建一個實現「IHttpHandler」的類,並將您的安全性放在那裏。請參閱http://stackoverflow.com/q/1146652 – 2014-09-29 22:09:58

+0

在這種情況下,我會將我的角色檢查和等等放入RouteHandler中?我不積極,但這似乎並不適合這種事情。 – 2014-09-29 22:13:45

+1

然後從標準控制器方法提供文件。這可能是我如何做到的。你可以用你想要的任何安全性來加載,MVC神將會得到滿足。 – 2014-09-29 22:15:17

回答

3
  1. IIS是服務靜態文件,如果你想停止這個你可以刪除默認的靜態文件處理程序比每次請求是 通過服務器D MVC/OWIN。
  2. 不是讓你的控制器 靜態文件處理和授權:聽/地圖路線,其中靜態文件位於

刪除默認靜態文件處理程序將它添加到的web.config文件

<configuration> 
    <system.webServer> 
     <handlers> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
</configuration> 
+0

我如何得到這個角度?我的網頁應用程序是使用Typescript在Angular 1.6中編寫的。如果我刪除了StaticFile模塊,index.html不會被提供,它會攪亂一切。我只需要限制**附件**文件夾和服務器靜態/媒體文件對授權用戶的訪問。有任何想法嗎? – Nexus 2018-02-18 00:04:56

+0

看看,這可能會幫助你https://stackoverflow.com/a/11258217/715224 – 2018-02-23 19:11:50

+0

你是一個朋友!非常感謝,讓我看看,並試試看。多謝。 – Nexus 2018-02-23 19:27:34