ASP.NET 完成基于表单的身份验证
實(shí)現(xiàn):驗(yàn)證用戶身份成功,并登陸后臺Admin文件夾里的index.aspx后臺管理首頁面,否則禁止匿名用戶訪問項(xiàng)目中的Admin文件夾里的任何一個(gè)文件。
?
步驟一:
?在根目錄下的web.config中加入:
<system.web>?
<authentication mode="Forms">
?? ??? ??? ?<forms loginUrl="Login.aspx" defaultUrl="Admin/Index.aspx" name=".ASPXFORMSAUTH" timeout="30">
?? ??? ??? ?</forms>
</authentication>?
</system.web>?
?loginUrl:用戶沒有登錄,跳轉(zhuǎn)到的登錄頁面?? 默認(rèn)值為 login.aspx。
?defaultUrl:正確登錄之后,在后臺代碼沒有指向指定頁的時(shí)候,系統(tǒng)將自動跳轉(zhuǎn)的頁面
??????? name:指定要用于身份驗(yàn)證的 HTTP Cookie。如果正在一臺服務(wù)器上運(yùn)行多個(gè)應(yīng)用程序并且每個(gè)應(yīng)用程序都需要唯一的 Cookie,則必須在每個(gè)應(yīng)用程序的 Web.config 文件中配置 Cookie 名稱。? 默認(rèn)值為 ".ASPXAUTH"。
timeout:指定 Cookie 過期前逝去的時(shí)間(以整數(shù)分鐘為單位), ?默認(rèn)值為 "30"
?
步驟二:
步驟二可以由倆種方法:
1)、在Admin文件夾下新建一個(gè)web.config文件,并加入以下代碼
<system.web>
?? ??? ?<!--拒絕匿名用戶訪問此目錄下的任何文件-->
?? ??? ?<authorization>
?? ??? ??? ?<deny users="?"/>
?? ??? ?</authorization>?? ????
</system.web>?
?deny users="?":表示禁止匿名用戶訪問Admin目錄下的任何文件
?到目前為止,只要你訪問Admin下的任何文件,都會自動跳轉(zhuǎn)到Login.aspx登陸頁面了,要求你先登錄,否則別想看到頁面。
2)、在根目錄下的web.config文件中的<system.web> 的結(jié)束標(biāo)記</system.web> 后加入一下代碼:
? <location path="Admin">
??? ??? <system.web>
??? ??? ??? <authorization>
??? ??? ??? ??? <deny users="?"/>
??? ??? ??? </authorization>
??? ??? </system.web>
?? </location>
path:表示設(shè)置所要針對的路徑/目錄
deny users="?":表示禁止匿名用戶訪問Admin目錄下的任何文件
?
步驟三:
在根目錄下,創(chuàng)建Login.aspx登陸頁面(可不是在Admin目錄下),加兩個(gè)textbox控件和一個(gè)botton控件,分別是用戶名,密碼,和登陸按鈕
雙擊登陸按鈕,在其登陸方法里寫上:
protected void btn_Login_Click(object sender, EventArgs e)
{
??????? if (TextBox1.Text == "admin" && TextBox2.Text == "fenghua17173")
??????? {
??????????? //“通知”表單驗(yàn)證,該用戶名已經(jīng)通過身份驗(yàn)證
??????????? FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true);
??????? }
??????? else
??????? {
??????????? Response.Write("<script>alert('賬號或密碼有誤,登錄失敗!');</script>");
??????? }
}
這時(shí)你在login.aspx頁面里填上賬號密碼,系統(tǒng)就會根據(jù)根你在根目錄下web.config中配置的?defaultUrl地址路徑跳轉(zhuǎn)過去,也就是Admin/Index.aspx頁面。
現(xiàn)在Admin目錄下的所有頁面,均已通過身份驗(yàn)證,得到了可訪問的票據(jù)。
?
最后一點(diǎn):
有了登錄,當(dāng)然別忘了需要注銷,這個(gè)更簡單:
在Admin目錄下的任何一個(gè)頁面中,加一個(gè)注銷button按鈕,并在其方法下寫入:
?
//退出系統(tǒng),注銷用戶
protected void btn_Logout_Click(object sender, EventArgs e)
{
??????? //刪除用戶票據(jù)
??????? FormsAuthentication.SignOut();
?
??????? //重新定向到登陸頁面
??????? FormsAuthentication.RedirectToLoginPage();
}
?
好了,你已經(jīng)知道如何配置web.Config中的authentication,來完成基于表單的身份驗(yàn)證了。
?
本文參考:http://www.fengfly.com/plus/view-174785-1.html
?
思考:
網(wǎng)站結(jié)構(gòu)如下:
??? /index.aspx
??? /userLogin.aspx
??? /adminLogin.aspx
??? /user/*.aspx
??? /admin/*.aspx
需求:在未登錄的情況下:
?? 訪問/user/路徑下的頁面的請求轉(zhuǎn)向到/userLogin.aspx;
????????????? 訪問/admin/路徑下的頁面的請求被轉(zhuǎn)向到/adminLogin.aspx;
?
?
另附廣告:女朋友的淘寶網(wǎng)店,為她做宣傳,希望大家別介意,http://iyseek.taobao.com? 歡迎大家逛逛,嘿嘿!如有需要幫助,請聯(lián)系MSN:zheng331773812@hotmail.com(上班時(shí)在線)?? QQ:331773812
歡迎大家共同交流!
轉(zhuǎn)載于:https://www.cnblogs.com/jsonzheng/archive/2010/08/30/1812715.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET 完成基于表单的身份验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Remoting Basic(
- 下一篇: 程序员职场第二次课笔记 9.9号