`

记住密码保存功能

    博客分类:
  • Js
阅读更多
    目标: 现在的用户一般都是越来越懒了,所以很多网站登陆时都有提供记住密码功能,以便用户下次登陆不需要再输入用户及密码。



   思路:页面中提供记住密码选框当用户勾选记住密码的选项时,如果通过用户合法性及正确性的验证后,便将用户名与密码记入Cookie。当页面再次加载时在Page_Load事件中检测是否上次已记住该用户,如果记住的话便将用户名与密码提取出来赋值给应用程序。由此完成记住密码的功能。

1、验证成功后执行如下代码(将密码存储入Cookies即写Cookies操作)


                   //保存用户名密码到cookie
                    // 设置 Cookie 信息
                    HttpCookie cookie = new HttpCookie("USER_COOKIE");
                    if (this.check_Save.Checked)
                    {

                        // 设置用户昵称、密码
                        cookie.Values.Add("Name", str_userName);
                        cookie.Values.Add("Pwd", str_userPwd);

                        // 令 Cookie 永不过期

                        cookie.Expires = System.DateTime.Now.AddDays(7.0);

                        // 保存用户的 Cookie
                        HttpContext.Current.Response.Cookies.Add(cookie);
                    }
                    else  // 若记住密码未勾选则默认这次取消记住密码,则将原本存密码的Cookies生存期设为现在,则会自动销毁
                    {
                        if (Response.Cookies["USER_COOKIE"] != null)

                            Response.Cookies["USER_COOKIE"].Expires = DateTime.Now;
                    }

                    Response.Redirect("Main.aspx");

2、在页面的Page_Load事件中添加如下代码:

       // 非回发时执行如下程序
        if (!IsPostBack)
        {
            // 请求上次存储的Cookies
            HttpCookie cookies = Request.Cookies["USER_COOKIE"];

            // 如果此Cookies存在且它里面有子键则进行读取
            if (cookies != null && cookies.HasKeys)
            {
                txt_UserName.Text = cookies["Name"];

                // 密码框赋值
                txt_UserPwd.Attributes.Add("value", cookies["Pwd"]);

                // 并设置勾选记住密码
                this.check_Save.Checked = true;
            }
        }


即在下次页面加载时读取Cookies判断是否用户有记住密码,并把值从Cookies中读取出来并赋值给应用程序



这里面有涉及到一个知识点:即给密码框赋值。



// 密码框赋值

txt_UserPwd.Attributes.Add("value", cookies["Pwd"]);

    首先设置TextBox类型为密码框模式,即TextBox控件的TextMode属性设置为Password即可,并命名为txt_UserPwd。

    例如密码为"123",这时侯如果要在后台直接给txt_UserPwd直接赋值采取txt_UserPwd="123"是无法将值赋给文本密码框,而需要采用 txt_UserPwd.Attributes.Add("value","123")的方式才能赋值。

      具相关介绍是为了安全,但是当采用后者来给密码框赋值后,在页面查看源文件时就会看到密码的值,即采用后者后密码框txt_UserPwd的html代码就成如下所述的:

<input name="txt_UserPwd" type="password" id="txt_UserPwd" tabindex="2" class="txt_Style" value="123" />

不知道还有没有更合理的解释。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics