2012-02-28 47 views
3

我有一個asp.net網絡應用程序並可通過表單身份驗證訪問。裏面的文件夾結構如下所示: -授權並驗證對靜態內容的訪問(pdf)

\myapp 
\document\pdf\hello1.pdf 
\document\pdf\hello2.pdf 
\document\pdf\hello3.pdf 
\document\pdf\hello4.pdf 

http://localhost/myapp/document/pdf/hello1.pdf

現在這些PDF文件的應用程序內的錨鏈接使用。現在我想強制執行認證&授權來限制直接訪問這些靜態資源。如果有來自應用程序外部的訪問權限,則應該進入登錄頁面。

我無法更改錨標記中文件的路徑,因爲我在整個應用程序的許多地方都使用它。

有沒有辦法處理web.config?

請提出一些解決方案。

謝謝。

+0

您的PDF頁面鏈接是否有匿名訪問?如果不是這樣,那麼您可以將PDF文件夾的讀取權限授予ASP.NET帳戶(NT服務等),然後單擊鏈接發送選定的PDF文件名/ ID作爲輸入並將內容傳回爲PDF來自服務器的文件。 – 2012-02-28 10:58:09

回答

0

您可以使用location元素爲文件夾分別設置安全設置。

或者您可以在文檔文件夾中放置一個web.config文件並在其中配置安全性。

+0

只有一些文件從asp.net安全傳遞,其餘像pdf沒有通過。 – Aristos 2012-02-28 08:15:54

1

您應該將以下行添加到web.config,以限制對「文檔」文件夾的訪問權限僅限於已通過身份驗證的用戶。
根據需要,未經身份驗證的用戶將自動重定向到登錄頁面。

<configuration> 

.......... 
<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" name="TSAuthCookie" cookieless="UseCookies" 
    timeout="60" path="/"/> 
</authentication> 
<location path="document"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
    </system.web> 
</location> 
</configuration> 
+0

對不起,我只是更新了我的問題描述。文檔文件夾本身包含另一個名爲pdf的文件夾。 – Karan 2012-02-28 09:15:20

+1

我試圖像這樣使用。但它不起作用。 – Karan 2012-02-28 09:17:31

+0

什麼是您的應用程序的實際行爲?文件是'公共'? – 2012-02-28 12:29:36

0

要啓用的web.config <authorization>因素影響你需要在IIS6啓用通配符腳本映射非ASP.NET文件擴展名(如果啓用了經典管道模式適用於IIS7),或使用集成的管道模式在IIS7中。

請參閱http://ruslany.net/2008/09/wildcard-script-mapping-and-iis-7-integrated-pipeline/

然後web.config文件條目,如下面的工作:

<location path="document"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
    </system.web> 
+1

或者您可以簡單地添加一個.PDF文件擴展名的映射,以通過aspnet_isapi.dll – SilverlightFox 2012-02-28 13:40:25

1

對於.NET 2.0/3.5/4.0和IIS6我發現下面是必要的強制靜態文件,如在一個特定文件夾的.pdf由.NET進行處理:

1)IIS6配置:

A.在用於瓦特的屬性ebsite,轉到主目錄選項卡,然後單擊配置
B.雙擊現有的「應用程序擴展」條目(如.ascx)並複製在「可執行文件」中找到的路徑(該路徑將根據版本的不同而變化。 NET在使用中;因此,它更容易複製粘貼&)
C.取消對話框添加/編輯應用程序擴展名映射,然後單擊「Add」添加一個新的擴展
D.貼上您在1B複製到「可執行」
E中的路徑在「擴展」中輸入.pdf(或其他文件擴展名)
F.根據需要選擇「所有動詞」或「限制爲」GET等;如果不是服務器上的物理文件,則取消選中「驗證文件是否存在」
G.單擊確定所有的對話框

2)web.config配置:

A.添加位置限制目錄或文件:

<location path="your_directory"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
</location> 

B.添加以下的HttpHandlers的部分:

<add path="*.pdf" verb="*" type="System.Web.StaticFileHandler" validate="true" /> 

現在.net將僅在your_directory中向.pdfs提供驗證用戶(使用表單身份驗證)。

+0

您將如何做到這一點的IIS 7.5?我嘗試將.pdf作爲拒絕文件擴展名添加到請求過濾規則,然後將受限制的目錄設置添加到web.config文件,並且我仍然能夠以匿名用戶的身份訪問和閱讀PDF文件。 – Bryan 2015-02-23 21:33:54

+0

System.Web.StaticFileHandler來自哪裏沒有解釋 – roeb 2015-06-09 08:49:31