asp.net中的窗体身份验证(分目录验证篇)
在上一篇博文《asp.net中的窗體身份驗證(最簡單篇)》中的身份驗證雖然很簡單,但是有一個缺點,就是訪問整個網站都必須要經過身份驗證,而事實上,很多網站都不會這么要求的。
??? 比如一個新聞系統,通常只有在發布新聞的網頁才需要身份驗證,而用戶瀏覽新聞是不需要身份驗證的。對于這種情況,就要針對不同的網頁來進行身份驗證了。
??? 要實現這種功能,也只要將《asp.net中的窗體身份驗證(最簡單篇)》稍作修改,具體操作方式如下所示:
??? 第一步、創建一個子文件夾,將所有要驗證的網頁都放在這個文件夾中,設置該文件夾的名字為“admin”。
??? 第二步、修改web.config文件。
??? 1、在<system.web>和</system.web>中找到<authentication>節,將其改為“<authentication mode="Forms"><forms loginUrl="~/admin/AdminLogin.aspx"></forms></authentication>”,其中Forms代表使用表單認證;loginUrl用于指定登錄頁面URL,個人比較喜歡將登錄頁面也放在admin文件夾中,所以在此要指定登錄頁面URL,如果還是想使用根目錄中的login.aspx頁面作為登錄頁面,則可以省略<forms>節。
??? 2、在<system.web>和</system.web>中添加“<authorization><allow users="?"/></authorization>”,其中“<allow users="?"/>”代表允許所有的匿名用戶。注意此處與《asp.net中的窗體身份驗證(最簡單篇)》的區別,在《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>節。
??? 第五步、在“admin”子文件夾中創建AdminLogin.aspx文件。如果在第二步中沒有使用<forms>節來指定用戶登錄頁面,則在網站根目錄下創建login.aspx文件。
??? 第六步、在AdminLogin.aspx文件(或login.aspx文件)中驗證身份,如果身份驗證通過,使用FormsAuthentication.SetAuthCookie()為用戶創建一個身份驗證的票據,并將其添加到Cookie中。以后,再訪問網站中admin子目錄下的其他網頁,就不需要使用進行身份驗證了。單擊提交按鈕后的代碼與《asp.net中的窗體身份驗證(最簡單篇)》中的代碼類似,在此就不再贅述了
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/smallfools/archive/2009/05/26/4217804.aspx
轉載于:https://www.cnblogs.com/mcsm/articles/1799497.html
總結
以上是生活随笔為你收集整理的asp.net中的窗体身份验证(分目录验证篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么要实施服务器虚拟化
- 下一篇: ASP.NET : Kerberos网络