很多时候我们在登陆一个网站的时候,输入用户名和密码下面都有一个记住我的功能选项,在不知道怎做的情况下,感觉非常头疼,其实很容易的,接下来就给大家介绍一下怎么实现此功能。
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。