天天看點

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中的窗體身份驗證(最簡單篇)》中的代碼類似,在此就不再贅述了。

=============================

原創不容易,轉載請注明出處。

相關連結:

1、asp.net中的窗體身份驗證(最簡單篇)

2、asp.net中的窗體身份驗證(分目錄驗證篇)

3、asp.net中的窗體身份驗證(完整篇之一:建立asp.net的窗體身份驗證方式)

4、asp.net中的窗體身份驗證(完整篇之二:asp.net的窗體身份驗證過程)

5、asp.net中的窗體身份驗證(完整篇之三:使用者登入頁面)

6、asp.net中的窗體身份驗證(完整篇之四:獲得使用者資料)

7、asp.net中的窗體身份驗證(完整篇之五:登出)

8、asp.net中的窗體身份驗證(完整篇之附錄:web.config中相應節點詳解)

9、asp.net中的窗體身份驗證(不同的角色通路不同的目錄)

10、asp.net中的窗體身份驗證(驗證HTML檔案)

11、asp.net中的窗體身份驗證(完整篇之六:登出後不能通過後退回來面來的頁面)

    本例的下載下傳位址為:http://www.aspxfans.com/myBlogFile/窗體身份驗證:分目錄驗證.rar或http://download.csdn.net/source/1962411

    本例在VS2005中測試通過。

    本例的優點:過程和代碼都十分簡單,可以指定某個目錄中的網頁進行身份驗證,而不是整個網站的所有網站都進行身份驗證。

    本例的缺點:身份驗證過于簡單,驗證結果隻有兩種,一種是沒有通過驗證,因而拒絕通路;一種是通過驗證,可以通路。如果想對權限進行細分,比較說管理者A擁有添權重限,而管理者B隻擁有檢視權限,這種功能就無法實作了。