Asp.net

如何在 IIS 7.5 上使用 ASP.NET 表單身份驗證保護靜態文件?

  • May 25, 2010

我有一個在共享主機上執行 IIS 7.5 伺服器和 ASP.NET 4.0 的網站,但完全信任。

該站點是一個基本的“文件瀏覽器”,允許訪問者登錄並顯示可供他們使用的文件列表,並且顯然可以下載文件。靜態文件(主要是 pdf 文件)位於站點上名為 data 的子文件夾中,例如http ://example.com/data/ ..。

該站點使用 ASP.NET 表單身份驗證。

我的問題是:如何讓 ASP.NET 引擎處理對數據文件夾中靜態文件的請求,以便對文件的請求由 ASP.NET 進行身份驗證,並且使用者無法深度連結到文件和抓取他們不允許擁有的文件?

如果您的應用程序池在集成模式下執行,那麼您可以執行以下操作。

將以下內容添加到您的頂級 web.config。

 <system.webServer>
   <modules>
     <add  name="FormsAuthenticationModule"  type="System.Web.Security.FormsAuthenticationModule" />
     <remove  name="UrlAuthorization" />
     <add  name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"  />
     <remove  name="DefaultAuthentication" />
     <add  name="DefaultAuthentication"  type="System.Web.Security.DefaultAuthenticationModule" />
   </modules>
 </system.webServer>

現在,您可以在 web.config 中使用標準 ASP.NET 權限來強制對目錄中的所有文件進行表單身份驗證。

<system.web>
   <authorization>
       <deny users="?" />
   </authorization>
   <authentication mode="Forms" />
</system.web>

引用自:https://stackoverflow.com/questions/2903292