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