程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> ASP.NET中HTML頁面的訪問驗證設置方法

ASP.NET中HTML頁面的訪問驗證設置方法

編輯:ASP.NET基礎

可能有很多朋友和我一樣不會留意到這樣的問題,在ASP.NET中,使用其自身提供的訪問驗證功能(表單驗證、Passport 驗證、Windows 驗證),並不會對靜態文件(如 html、圖像文件、文本文件等)進行訪問限制,即使這些文件置於需要驗證後才能訪問的文件夾下,匿名用戶仍然可以訪問到這些文件。這是因為靜態文件默認是由 IIS 處理,IIS 在接收到對這些文件的請求後,並不會轉交給 ASP.NET 處理,所以,在 ASP.NET 中的權限驗證失去了作用。換句話說,這些文件不在ASP.NET 的管轄范圍內。

那麼,如何將這些文件置於 ASP.NET 的管轄范圍內呢?以 html 文件為例,最簡單的辦法是將 html 文件的後綴改為 aspx,這個辦法很簡單,也算實用,但並不正規。另一種方法是針對 IIS 進行設置,讓 IIS 將 html 文件的處理權轉交給 ASP.NET。設置如下:

(1) 打開 IIS,找到需要設置的 ASP.NET 應用程序,打開屬性對話框。

(2) 在“虛擬目錄”選項卡中有一個“應用程序設置”,點擊這裡面的“設置”按鈕,彈出新的對話框。

(3) 在“對應”選項卡中,點擊“新增”按鈕,增加 .htm 的後綴與處理程序的對應關系,具體設置可參照 .aspx 的設置。

設置好之後,再次訪問位於需要驗證的目錄下的 html 文件,會轉到登錄頁面提示用戶登錄,說明訪問驗證已經生效。但到此仍未完成,因為登錄後會發現,htm 文件錯誤。這涉及到 HttpHandler 的問題,因為對於 ASP.NET 來說,這相當於啟用了一種新的文件類型,但卻沒有相應的處理程序。所以,還需要改動 web.config 的設置,注冊一個新的處理程序,對於 html 文件,我們可以使用 aspx 文件的處理程序,所以設置如下:

<system.web>
...
<httpHandlers>
...
<!-- 增加後綴為 htm 文件的處理程序,這裡使用 aspx 文件的處理程序 -->
<add verb="*" path="*.htm" type="System.Web.UI.PageHandlerFactory"/>
</httpHandlers>
...
</system.web>

再次訪問,這次是編譯錯誤,因為缺少對 htm 文件的相應編譯程序,再修改web.config:

<system.web>
<compilation>
...
<!-- 設置後綴為 htm 的文件的編譯程序,這裡使用 aspx 文件的編譯程序 -->
<buildPRoviders>
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>
...
</system.web>

這回再訪問這個 html 文件,它正如我們期望的一樣,需要進行身份驗證,並且也能夠正常顯示。其實這個問題的核心在於對 HttpHandler 的理解。另外,據說在 IIS7 中,只要把應用程序放在模式為Integrated 的應用程序池中,就可以解決這個問題。

如果不是特殊要求或者非要使用HTML靜態頁面時,個人覺得還是把html轉換成aspx比較簡單。客戶部署不需要作過多的配置,有些客戶就很煩部署系統要作配置,所以還是簡單為好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved