點擊進入推薦鏈接
很多時候我們在登陸一個網站的時候,輸入用戶名和密碼下面都有一個記住我的功能選項,在不知道怎做的情況下,感覺非常頭疼,其實很容易的,接下來就給大家介紹一下怎么實現此功能。
1、思路、用到的知識點。
1.1、首先分析用到的知識點有哪些?
用到的知識點是Cookie,Cookie是客戶端的一種保存機制。Cookie的取值方式是通過鍵取值,你也可以通過Expires屬性為其指定過期時間。
1.2、其次什么時候創建Cookie呢?
那就是在你校驗好用戶名和密碼都正確以后就創建Cookie,為其鍵名賦值。
2、下面有兩個方法,分別是UserLogin和SetCookie,UserLogin方法是用於校驗用戶輸入的用戶名和密碼、當用戶名和密碼都正確的情況下,就調用SetCookie方法創建Cookie。
1 /// <summary> 2 /// 用戶登錄。 3 /// </summary> 4 /// <param name="_userName">用戶名。</param> 5 /// <param name="_password">密碼。</param> 6 private void UserLogin(string _userName, string _password) 7 { 8 //在這里是通過用戶名得到一個對象。 9 Model.UserInfo userInfo = userInfoBll.GetUserInfo(_userName); 10 if (userInfo != null) 11 { 12 if (userInfo.UserPassword.Equals(_password)) 13 { 14 //如果用戶名和密碼都正確了,就調用SetCookie方法為其創建Cookie。 15 //在這里密碼我沒有加密,你可別忘了加密啊。 16 SetCookie(userInfo); 17 //為Session賦值。 18 Session["UserInfo"] = userInfo; 19 //頁面跳轉。 20 Response.Redirect("/Member/Default.aspx"); 21 } 22 else 23 { 24 ShowMsgInfo = "用戶名或密碼錯誤"; 25 return; 26 } 27 } 28 else 29 { 30 ShowMsgInfo = "用戶名不存在"; 31 return; 32 } 33 } 34 35 /// <summary> 36 /// 設置Cookie。 37 /// </summary> 38 /// <param name="userInfo">傳過來一個userInfo對象,得到對象里的用戶名和密碼</param> 39 private void SetCookie(UserInfo userInfo) 40 { 41 //創建cookie1,為其指定鍵名是userName,值是輸入的用戶名。 42 HttpCookie cookie1 = new HttpCookie("userName", userInfo.UserName); 43 //創建cookie1,為其指定鍵名是userName,值是輸入密碼。 44 HttpCookie cookie2 = new HttpCookie("userPassword", userInfo.UserPassword); 45 //指定過期為7天。 46 cookie1.Expires = DateTime.Now.AddDays(7); 47 cookie2.Expires = DateTime.Now.AddDays(7); 48 //將創建的Cookie輸出到客戶端。 49 Response.Cookies.Add(cookie1); 50 Response.Cookies.Add(cookie2); 51 }
3、下面當我們在瀏覽器地址欄中輸入:http://localhost:8090/Member/Login.aspx(這個是我自己的頁面,你輸入的地址應該和我的不一樣哦)的時候,這個時候會請求Login.aspx頁
面,第一次會執行get請求然后就會判斷Cookie中是否有值,然后根據拿到的值去校驗,如果校驗成功,那么就跳轉頁面,如果校驗失敗就將Cookie設置為過期。
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 //如果是Post請求。 4 if (IsPostBack) 5 { 6 string userName = Request.Form["txtName"]; 7 string userPassword = Request.Form["txtPassword"]; 8 string validateCode = Request.Form["txtValidateCode"]; 9 if (Session["ValidateCode"].Equals(validateCode)) 10 { 11 UserLogin(userName, userPassword); 12 } 13 else 14 { 15 ShowMsgInfo = "驗證碼錯誤"; 16 return; 17 } 18 } 19 else //get請求。 20 { 21 //校驗Cookie中的值。 22 if (Request.Cookies["userName"] != null && Request.Cookies["userPassword"] != null) 23 { 24 //得到Cookie中存儲的用戶名。 25 string userName = Request.Cookies["userName"].Value.ToString(); 26 //得到Cookie中存儲的密碼。 27 string userPassword = Request.Cookies["userPassword"].Value.ToString(); 28 //校驗用戶名,得到一個對象。 29 Model.UserInfo userInfo = userInfoBll.GetUserInfo(userName); 30 //!=null說明數據庫里有此用戶。 31 if (userInfo != null) 32 { 33 //如果得到的對象中的方法等於Cookie中存儲的數據。 34 if (userInfo.UserPassword == userPassword) 35 { 36 //跳轉。跳轉以后就不會執行下面的Cookie過期代碼了。 37 Response.Redirect("/Member/Default.aspx"); 38 } 39 } 40 //如果登陸失敗,就為Cookie設置為過期。 41 Response.Cookies["userName"].Expires = DateTime.Now.AddDays(-1); 42 Response.Cookies["userPassword"].Expires = DateTime.Now.AddDays(-1); 43 } 44 } 45 }
End。