ASP.NET中HTML頁面的訪問驗證設(shè)置方法
可能有很多朋友和我一樣不會留意到這樣的問題,在ASP.NET中,使用其自身提供的訪問驗證功能(表單驗證、Passport 驗證、Windows 驗證),并不會對靜態(tài)文件(如 html、圖像文件、文本文件等)進行訪問限制,即使這些文件置于需要驗證后才能訪問的文件夾下,匿名用戶仍然可以訪問到這些文件。這是因為靜態(tài)文件默認(rèn)是由 IIS 處理,IIS 在接收到對這些文件的請求后,并不會轉(zhuǎn)交給 ASP.NET 處理,所以,在 ASP.NET 中的權(quán)限驗證失去了作用。換句話說,這些文件不在ASP.NET 的管轄范圍內(nèi)。
那么,如何將這些文件置于 ASP.NET 的管轄范圍內(nèi)呢?以 html 文件為例,最簡單的辦法是將 html 文件的后綴改為 aspx,這個辦法很簡單,也算實用,但并不正規(guī)。另一種方法是針對 IIS 進行設(shè)置,讓 IIS 將 html 文件的處理權(quán)轉(zhuǎn)交給 ASP.NET。設(shè)置如下:
(1) 打開 IIS,找到需要設(shè)置的 ASP.NET 應(yīng)用程序,打開屬性對話框。
(2) 在“虛擬目錄”選項卡中有一個“應(yīng)用程序設(shè)置”,點擊這里面的“設(shè)置”按鈕,彈出新的對話框。
(3) 在“對應(yīng)”選項卡中,點擊“新增”按鈕,增加 .htm 的后綴與處理程序的對應(yīng)關(guān)系,具體設(shè)置可參照 .aspx 的設(shè)置。
設(shè)置好之后,再次訪問位于需要驗證的目錄下的 html 文件,會轉(zhuǎn)到登錄頁面提示用戶登錄,說明訪問驗證已經(jīng)生效。但到此仍未完成,因為登錄后會發(fā)現(xiàn),htm 文件錯誤。這涉及到 HttpHandler 的問題,因為對于 ASP.NET 來說,這相當(dāng)于啟用了一種新的文件類型,但卻沒有相應(yīng)的處理程序。所以,還需要改動 web.config 的設(shè)置,注冊一個新的處理程序,對于 html 文件,我們可以使用 aspx 文件的處理程序,所以設(shè)置如下:
<system.web> ... <httpHandlers> ... <!-- 增加后綴為 htm 文件的處理程序,這里使用 aspx 文件的處理程序 --> <add verb="*" path="*.htm" type="System.Web.UI.PageHandlerFactory"/> </httpHandlers> ... </system.web>
再次訪問,這次是編譯錯誤,因為缺少對 htm 文件的相應(yīng)編譯程序,再修改web.config:
<system.web> <compilation> ... <!-- 設(shè)置后綴為 htm 的文件的編譯程序,這里使用 aspx 文件的編譯程序 --> <buildPRoviders> <add extension=".htm" type="System.Web.Compilation.PageBuildProvider"/> </buildProviders> </compilation> ... </system.web>
這回再訪問這個 html 文件,它正如我們期望的一樣,需要進行身份驗證,并且也能夠正常顯示。其實這個問題的核心在于對 HttpHandler 的理解。另外,據(jù)說在 IIS7 中,只要把應(yīng)用程序放在模式為Integrated 的應(yīng)用程序池中,就可以解決這個問題。
如果不是特殊要求或者非要使用HTML靜態(tài)頁面時,個人覺得還是把html轉(zhuǎn)換成aspx比較簡單??蛻舨渴鸩恍枰鬟^多的配置,有些客戶就很煩部署系統(tǒng)要作配置,所以還是簡單為好。
相關(guān)文章
asp.net實現(xiàn)利用反射,泛型,靜態(tài)方法快速獲取表單值到Model的方法
這篇文章主要介紹了asp.net實現(xiàn)利用反射,泛型,靜態(tài)方法快速獲取表單值到Model的方法,結(jié)合實例形式分析了asp.net中反射,泛型,靜態(tài)方法給model賦值的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11- 前兩天看了一個自定義分頁控件,和AspNetPager一樣是實現(xiàn)IPostBackEventHandler接口,不過簡潔許多,就想能不能實現(xiàn)ICallbackEventHandler接口做到無刷新分頁呢?想到了就馬上去做,終于,設(shè)想變成了現(xiàn)實?。?/div> 2010-03-03
asp.net jQuery Ajax用戶登錄功能的實現(xiàn)
前幾天把jbox源碼修改成仿QQ空間模擬窗口后發(fā)現(xiàn)有很多人在關(guān)注。今天就貼一下我利用該模擬窗口實現(xiàn)的用戶登錄功能的代碼。2009-11-11asp.net 數(shù)據(jù)類型轉(zhuǎn)換類代碼
asp.net 數(shù)據(jù)類型轉(zhuǎn)換類代碼,需要的朋友可以參考下2012-06-06在dropDownList中實現(xiàn)既能輸入一個新值又能實現(xiàn)下拉選的代碼
在dropDownList中實現(xiàn)既能輸入一個新值,又能實現(xiàn)下拉選項,想必很多的朋友已經(jīng)為此功能按耐不住了吧,接下來與大家分享下如何實現(xiàn),感興趣的朋友可以參考下哈2013-04-04.NET Core利用swagger進行API接口文檔管理的方法詳解
這篇文章主要給大家介紹了關(guān)于.NET Core利用swagger進行API接口文檔管理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03最新評論