asp.net 身份驗證(分目錄驗證篇)
更新時間:2009年05月27日 01:49:19 作者:
在上一篇博文《asp.net中的身份驗證(最簡單篇)》中的身份驗證雖然很簡單,但是有一個缺點,就是訪問整個網(wǎng)站都必須要經(jīng)過身份驗證,而事實上,很多網(wǎng)站都不會這么要求的。
比如一個新聞系統(tǒng),通常只有在發(fā)布新聞的網(wǎng)頁才需要身份驗證,而用戶瀏覽新聞是不需要身份驗證的。對于這種情況,就要針對不同的網(wǎng)頁來進(jìn)行身份驗證了。
要實現(xiàn)這種功能,也只要將《asp.net中的身份驗證(最簡單篇)》稍作修改,具體操作方式如下所示:
第一步、創(chuàng)建一個子文件夾,將所有要驗證的網(wǎng)頁都放在這個文件夾中,設(shè)置該文件夾的名字為“admin”。
第二步、修改web.config文件。
1、在<system.web>和</system.web>中找到<authentication>節(jié),將其改為“<authentication mode="Forms"><forms loginUrl="~/admin/AdminLogin.aspx"></forms></authentication>”,其中Forms代表使用表單認(rèn)證;loginUrl用于指定登錄頁面URL,個人比較喜歡將登錄頁面也放在admin文件夾中,所以在此要指定登錄頁面URL,如果還是想使用根目錄中的login.aspx頁面作為登錄頁面,則可以省略<forms>節(jié)。
2、在<system.web>和</system.web>中添加“<authorization><allow users="?"/></authorization>”,其中“<allow users="?"/>”代表允許所有的匿名用戶。注意此處與《asp.net中的身份驗證(最簡單篇)》的區(qū)別,在《asp.net中的身份驗證(最簡單篇)》中,此處使用的是“<deny users="?"/>”,用于拒絕所有匿名用戶。
第三步、在需要身份驗證的子文件夾中添加一個web.config文件,在本例中為在“admin”文件夾中添加該文件。
第四步、修改需要身份驗證的子文件夾中的web.config文件,在本例中為“admin”文件夾中的web.config文件。
在<system.web>和</system.web>中,添加“<authorization><deny users="?"/></authorization>”,由于在根目錄中的web.config文件中聲明了允許所有匿名用戶訪問,所以在不能允許匿名用戶訪問的子文件夾中,必須要使用“<deny users="?"/>”來拒絕匿名用戶訪問。另外,在子文件夾中的web.config文件中可以沒有<authentication>節(jié)。
第五步、在“admin”子文件夾中創(chuàng)建AdminLogin.aspx文件。如果在第二步中沒有使用<forms>節(jié)來指定用戶登錄頁面,則在網(wǎng)站根目錄下創(chuàng)建login.aspx文件。
第六步、在AdminLogin.aspx文件(或login.aspx文件)中驗證身份,如果身份驗證通過,使用FormsAuthentication.SetAuthCookie()為用戶創(chuàng)建一個身份驗證的票據(jù),并將其添加到Cookie中。以后,再訪問網(wǎng)站中admin子目錄下的其他網(wǎng)頁,就不需要使用進(jìn)行身份驗證了。單擊提交按鈕后的代碼與《asp.net中的身份驗證(最簡單篇)》中的代碼類似,在此就不再贅述了。
本例在VS2005中測試通過。
本例的優(yōu)點:過程和代碼都十分簡單,可以指定某個目錄中的網(wǎng)頁進(jìn)行身份驗證,而不是整個網(wǎng)站的所有網(wǎng)站都進(jìn)行身份驗證。
本例的缺點:身份驗證過于簡單,驗證結(jié)果只有兩種,一種是沒有通過驗證,因而拒絕訪問;一種是通過驗證,可以訪問。如果想對權(quán)限進(jìn)行細(xì)分,比較說管理員A擁有添加權(quán)限,而管理員B只擁有查看權(quán)限,這種功能就無法實現(xiàn)了。
要實現(xiàn)這種功能,也只要將《asp.net中的身份驗證(最簡單篇)》稍作修改,具體操作方式如下所示:
第一步、創(chuàng)建一個子文件夾,將所有要驗證的網(wǎng)頁都放在這個文件夾中,設(shè)置該文件夾的名字為“admin”。
第二步、修改web.config文件。
1、在<system.web>和</system.web>中找到<authentication>節(jié),將其改為“<authentication mode="Forms"><forms loginUrl="~/admin/AdminLogin.aspx"></forms></authentication>”,其中Forms代表使用表單認(rèn)證;loginUrl用于指定登錄頁面URL,個人比較喜歡將登錄頁面也放在admin文件夾中,所以在此要指定登錄頁面URL,如果還是想使用根目錄中的login.aspx頁面作為登錄頁面,則可以省略<forms>節(jié)。
2、在<system.web>和</system.web>中添加“<authorization><allow users="?"/></authorization>”,其中“<allow users="?"/>”代表允許所有的匿名用戶。注意此處與《asp.net中的身份驗證(最簡單篇)》的區(qū)別,在《asp.net中的身份驗證(最簡單篇)》中,此處使用的是“<deny users="?"/>”,用于拒絕所有匿名用戶。
第三步、在需要身份驗證的子文件夾中添加一個web.config文件,在本例中為在“admin”文件夾中添加該文件。
第四步、修改需要身份驗證的子文件夾中的web.config文件,在本例中為“admin”文件夾中的web.config文件。
在<system.web>和</system.web>中,添加“<authorization><deny users="?"/></authorization>”,由于在根目錄中的web.config文件中聲明了允許所有匿名用戶訪問,所以在不能允許匿名用戶訪問的子文件夾中,必須要使用“<deny users="?"/>”來拒絕匿名用戶訪問。另外,在子文件夾中的web.config文件中可以沒有<authentication>節(jié)。
第五步、在“admin”子文件夾中創(chuàng)建AdminLogin.aspx文件。如果在第二步中沒有使用<forms>節(jié)來指定用戶登錄頁面,則在網(wǎng)站根目錄下創(chuàng)建login.aspx文件。
第六步、在AdminLogin.aspx文件(或login.aspx文件)中驗證身份,如果身份驗證通過,使用FormsAuthentication.SetAuthCookie()為用戶創(chuàng)建一個身份驗證的票據(jù),并將其添加到Cookie中。以后,再訪問網(wǎng)站中admin子目錄下的其他網(wǎng)頁,就不需要使用進(jìn)行身份驗證了。單擊提交按鈕后的代碼與《asp.net中的身份驗證(最簡單篇)》中的代碼類似,在此就不再贅述了。
本例在VS2005中測試通過。
本例的優(yōu)點:過程和代碼都十分簡單,可以指定某個目錄中的網(wǎng)頁進(jìn)行身份驗證,而不是整個網(wǎng)站的所有網(wǎng)站都進(jìn)行身份驗證。
本例的缺點:身份驗證過于簡單,驗證結(jié)果只有兩種,一種是沒有通過驗證,因而拒絕訪問;一種是通過驗證,可以訪問。如果想對權(quán)限進(jìn)行細(xì)分,比較說管理員A擁有添加權(quán)限,而管理員B只擁有查看權(quán)限,這種功能就無法實現(xiàn)了。
您可能感興趣的文章:
- asp.net 身份驗證(最簡單篇)
- asp.net Forms身份驗證和基于角色的權(quán)限訪問
- asp.net forms身份驗證,避免重復(fù)造輪子
- ASP.NET Internet安全Forms身份驗證方法
- Asp.Net二級域名共享Forms身份驗證、下載站/圖片站的授權(quán)訪問控制
- asp.net身份驗證方式介紹
- asp.net 身份驗證機(jī)制實例代碼
- Asp.net Mvc 身份驗證、異常處理、權(quán)限驗證(攔截器)實現(xiàn)代碼
- asp.net中幾種常用的身份驗證方法總結(jié)
- 詳解ASP.NET七大身份驗證方式以及解決方案
- ASP.NET窗體身份驗證詳解
相關(guān)文章
asp.net DropDownList自定義控件,讓你的分類更清晰
記得上次做論壇,一個功能就是合并2個子板塊的主題,用級聯(lián)的2個DropDownList也是可以完成,那樣我們要合并的時候總共就有4個DropDownList控件,覺得界面友好2011-10-10ASP.NET Core SignalR中的流式傳輸深入講解
這篇文章主要給大家介紹了關(guān)于ASP.NET Core SignalR中流式傳輸?shù)南嚓P(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11win10下vs2015配置Opencv3.1.0詳細(xì)過程
這篇文章主要為大家詳細(xì)介紹了win10下vs2015配置Opencv3.1.0的詳細(xì)過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11[Asp.Net Core]用Blazor Server Side實現(xiàn)圖片驗證碼
這篇文章主要介紹了如何用Blazor Server Side實現(xiàn)圖片驗證碼,文中講解非常詳細(xì),代碼幫助大家更好理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07ASP.NET實現(xiàn)QQ、微信、新浪微博OAuth2.0授權(quán)登錄
本文主要介紹了QQ、微信、新浪微博OAuth2.0授權(quán)登錄的示例,主要就是GET、POST遠(yuǎn)程接口,返回相應(yīng)的數(shù)據(jù),這里列出相關(guān)的代碼,供大家參考。2016-03-03ASP.NET MVC 數(shù)據(jù)驗證及相關(guān)內(nèi)容
這篇文章主要介紹了ASP.NET MVC 數(shù)據(jù)驗證及相關(guān)內(nèi)容的相關(guān)資料,需要的朋友可以參考下2014-10-10