asp.net 身份驗(yàn)證(分目錄驗(yàn)證篇)
更新時間:2009年05月27日 01:49:19 作者:
在上一篇博文《asp.net中的身份驗(yàn)證(最簡單篇)》中的身份驗(yàn)證雖然很簡單,但是有一個缺點(diǎn),就是訪問整個網(wǎng)站都必須要經(jīng)過身份驗(yàn)證,而事實(shí)上,很多網(wǎng)站都不會這么要求的。
比如一個新聞系統(tǒng),通常只有在發(fā)布新聞的網(wǎng)頁才需要身份驗(yàn)證,而用戶瀏覽新聞是不需要身份驗(yàn)證的。對于這種情況,就要針對不同的網(wǎng)頁來進(jìn)行身份驗(yàn)證了。
要實(shí)現(xiàn)這種功能,也只要將《asp.net中的身份驗(yàn)證(最簡單篇)》稍作修改,具體操作方式如下所示:
第一步、創(chuàng)建一個子文件夾,將所有要驗(yàn)證的網(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中的身份驗(yàn)證(最簡單篇)》的區(qū)別,在《asp.net中的身份驗(yàn)證(最簡單篇)》中,此處使用的是“<deny users="?"/>”,用于拒絕所有匿名用戶。
第三步、在需要身份驗(yàn)證的子文件夾中添加一個web.config文件,在本例中為在“admin”文件夾中添加該文件。
第四步、修改需要身份驗(yàn)證的子文件夾中的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文件)中驗(yàn)證身份,如果身份驗(yàn)證通過,使用FormsAuthentication.SetAuthCookie()為用戶創(chuàng)建一個身份驗(yàn)證的票據(jù),并將其添加到Cookie中。以后,再訪問網(wǎng)站中admin子目錄下的其他網(wǎng)頁,就不需要使用進(jìn)行身份驗(yàn)證了。單擊提交按鈕后的代碼與《asp.net中的身份驗(yàn)證(最簡單篇)》中的代碼類似,在此就不再贅述了。
本例在VS2005中測試通過。
本例的優(yōu)點(diǎn):過程和代碼都十分簡單,可以指定某個目錄中的網(wǎng)頁進(jìn)行身份驗(yàn)證,而不是整個網(wǎng)站的所有網(wǎng)站都進(jìn)行身份驗(yàn)證。
本例的缺點(diǎn):身份驗(yàn)證過于簡單,驗(yàn)證結(jié)果只有兩種,一種是沒有通過驗(yàn)證,因而拒絕訪問;一種是通過驗(yàn)證,可以訪問。如果想對權(quán)限進(jìn)行細(xì)分,比較說管理員A擁有添加權(quán)限,而管理員B只擁有查看權(quán)限,這種功能就無法實(shí)現(xiàn)了。
要實(shí)現(xiàn)這種功能,也只要將《asp.net中的身份驗(yàn)證(最簡單篇)》稍作修改,具體操作方式如下所示:
第一步、創(chuàng)建一個子文件夾,將所有要驗(yàn)證的網(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中的身份驗(yàn)證(最簡單篇)》的區(qū)別,在《asp.net中的身份驗(yàn)證(最簡單篇)》中,此處使用的是“<deny users="?"/>”,用于拒絕所有匿名用戶。
第三步、在需要身份驗(yàn)證的子文件夾中添加一個web.config文件,在本例中為在“admin”文件夾中添加該文件。
第四步、修改需要身份驗(yàn)證的子文件夾中的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文件)中驗(yàn)證身份,如果身份驗(yàn)證通過,使用FormsAuthentication.SetAuthCookie()為用戶創(chuàng)建一個身份驗(yàn)證的票據(jù),并將其添加到Cookie中。以后,再訪問網(wǎng)站中admin子目錄下的其他網(wǎng)頁,就不需要使用進(jìn)行身份驗(yàn)證了。單擊提交按鈕后的代碼與《asp.net中的身份驗(yàn)證(最簡單篇)》中的代碼類似,在此就不再贅述了。
本例在VS2005中測試通過。
本例的優(yōu)點(diǎn):過程和代碼都十分簡單,可以指定某個目錄中的網(wǎng)頁進(jìn)行身份驗(yàn)證,而不是整個網(wǎng)站的所有網(wǎng)站都進(jìn)行身份驗(yàn)證。
本例的缺點(diǎn):身份驗(yàn)證過于簡單,驗(yàn)證結(jié)果只有兩種,一種是沒有通過驗(yàn)證,因而拒絕訪問;一種是通過驗(yàn)證,可以訪問。如果想對權(quán)限進(jìn)行細(xì)分,比較說管理員A擁有添加權(quán)限,而管理員B只擁有查看權(quán)限,這種功能就無法實(shí)現(xiàn)了。
您可能感興趣的文章:
- asp.net 身份驗(yàn)證(最簡單篇)
- asp.net Forms身份驗(yàn)證和基于角色的權(quán)限訪問
- asp.net forms身份驗(yàn)證,避免重復(fù)造輪子
- ASP.NET Internet安全Forms身份驗(yàn)證方法
- Asp.Net二級域名共享Forms身份驗(yàn)證、下載站/圖片站的授權(quán)訪問控制
- asp.net身份驗(yàn)證方式介紹
- asp.net 身份驗(yàn)證機(jī)制實(shí)例代碼
- Asp.net Mvc 身份驗(yàn)證、異常處理、權(quán)限驗(yàn)證(攔截器)實(shí)現(xiàn)代碼
- asp.net中幾種常用的身份驗(yàn)證方法總結(jié)
- 詳解ASP.NET七大身份驗(yàn)證方式以及解決方案
- ASP.NET窗體身份驗(yàn)證詳解
相關(guān)文章
ASP.NET連接數(shù)據(jù)庫并獲取數(shù)據(jù)方法總結(jié)
這篇文章主要介紹了ASP.NET連接數(shù)據(jù)庫并獲取數(shù)據(jù)方法,結(jié)合實(shí)例分析總結(jié)了ASP.NET連接數(shù)據(jù)庫及獲取數(shù)據(jù)的相關(guān)實(shí)現(xiàn)技巧,并附帶了web.config配置文件的使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2015-11-11
常用的在數(shù)據(jù)庫中建立無限級樹形菜單的asp.net代碼
經(jīng)常在項(xiàng)目中遇到建立無限級樹形菜單展示的效果,這里簡單地做了一個,基本后臺代碼如下2008-09-09
在ASP.NET中實(shí)現(xiàn)彈出日歷的具體方法
這篇文章介紹了ASP.NET彈出日歷功能的實(shí)現(xiàn)方法,有需要的朋友可以參考一下2013-07-07
ASP.NET Core 過濾器中使用依賴注入知識點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是關(guān)于ASP.NET Core 過濾器中使用依賴注入的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-10-10
CheckBox為CheckBoxList實(shí)現(xiàn)全選或全取消選擇(js代碼實(shí)現(xiàn))
在管理商品后臺是,由于CheckBoxList的選擇太多,用戶需要一個全選或全取消的功能,這樣操作起來會提高效率同時可以減少誤點(diǎn)等,本文將教大家如何實(shí)現(xiàn),有需要的朋友可以參考下,望本文對你有所幫助2013-01-01
asp.net登錄驗(yàn)證碼實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了asp.net登錄驗(yàn)證碼實(shí)現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-08-08
ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問靜態(tài)頁面
高訪問量類型的電子商務(wù)網(wǎng)站,需要將一些不是經(jīng)常變化的頁面生成靜態(tài)頁面,然后普通用戶就可以直接訪問這些靜態(tài)頁面而不用再訪問需要連接數(shù)據(jù)庫的動態(tài)頁面。那么ASP.NET MVC3中如何做到這一點(diǎn)呢2011-12-12

