记住密码保存功能
目标: 现在的用户一般都是越来越懒了,所以很多网站登陆时都有提供记住密码功能,以便用户下次登陆不需要再输入用户及密码。
思路:页面中提供记住密码选框当用户勾选记住密码的选项时,如果通过用户合法性及正确性的验证后,便将用户名与密码记入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" value="123" />
不知道还有没有更合理的解释。