如果选中该复选框,我已编写了一个“记住我”复选框,用于在cookie中存储用户名和密码。我的问题是,如果他们检查它然后重新启动应用程序,用户名和密码会自动填充,但复选框不会保持检查状态。
我还没有找到办法做到这一点......
我将在下面发布我的代码:
if (!IsPostBack)
{
if (Request.Cookies["UserName"] != null && Request.Cookies["Password"] != null)
{
userNameTxtBox.Text = Request.Cookies["UserName"].Value;
passwordTxtBox.Attributes["value"] = Request.Cookies["Password"].Value;
}
}
if (chkBoxRememberMe.Checked)
{
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(30);
Response.Cookies["Password"].Expires = DateTime.Now.AddDays(30);
}
else
{
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(-1);
Response.Cookies["Password"].Expires = DateTime.Now.AddDays(-1);
}
Response.Cookies["UserName"].Value = myUserName
string passwordEncrypted = Crypto.Sha256(myPassword);
Response.Cookies["Password"].Value = passwordEncrypted;
上面的代码可以正常工作。但我有一个记住我的复选框,如果它被选中,我想将它保存到cookie并保持检查,直到用户取消选中它....
有什么想法吗?
答案 0 :(得分:2)
如果在任何时候存在cookie都应默认选中该复选框,那么我想你可以在这里设置其检查状态:
if (Request.Cookies["UserName"] != null && Request.Cookies["Password"] != null)
{
userNameTxtBox.Text = Request.Cookies["UserName"].Value;
passwordTxtBox.Attributes["value"] = Request.Cookies["Password"].Value;
chkBoxRememberMe.Checked = true; // <-- here
}
请注意,您可能会忽略一些问题......
答案 1 :(得分:0)
在安全方面,您不仅要做得非常糟糕,而且还要重新发明轮子。
ASP.Net已经支持开箱即用的表单身份验证,默认的成员资格提供程序,正确加密/哈希的身份验证Cookie,甚至logon control a remember me checkbox!
您可以将控件添加到ASP.Net登录页面,其标记如下:
<asp:Login ID="LoginControl1" runat="server" CreateUserUrl="Register.aspx"
VisibleWhenLoggedIn="False" TextLayout="TextOnTop" RememberMeSet="True">
(我们已将DisplayRememberMe属性设置为true。这会指示登录控件显示&#34;下次记住我&#34;复选框和成员资格提供程序以发送持久身份验证成功登录后,用户浏览器中的cookie。)
在开始尝试之前,您应该阅读"Walkthrough: Creating a Web Site with Membership and User Login" on MSDN。