使用Cookie記住用戶名和密碼並自動登陸


點擊進入推薦鏈接

很多時候我們在登陸一個網站的時候,輸入用戶名和密碼下面都有一個記住我的功能選項,在不知道怎做的情況下,感覺非常頭疼,其實很容易的,接下來就給大家介紹一下怎么實現此功能。

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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM