在Cookies中存储复选框选择

时间:2015-06-16 18:58:51

标签: c# asp.net cookies

如果选中该复选框,我已编写了一个“记住我”复选框,用于在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并保持检查,直到用户取消选中它....

有什么想法吗?

2 个答案:

答案 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. 如果您在Cookie存在时始终默认选中该复选框,则不会向用户提供取消选中复选框的任何方式。用户需要从浏览器中手动删除cookie,这不是一个非常好的用户体验。 (更不用说很多用户都不知道如何做到这一点。)
  2. 以纯文本格式存储用户密码 非常不负责任 。请立即停止这样做。相反,生成某种唯一标记以标识用户并将该标记存储在cookie中。然后,服务器端代码将针对与已知用户相关联的已知令牌验证令牌。从不以明文形式将用户密码存储在任何地方。

答案 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