在 Cookie 中存储复选框选择

本文关键字:复选框 选择 存储 Cookie | 更新日期: 2023-09-27 17:56:29

>我已经编程了一个记住我复选框,以便在选中该复选框时将用户名和密码存储在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 中并保持选中状态,直到用户取消选中它......

有什么想法吗?

在 Cookie 中存储复选框选择

如果默认情况下

应在 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 中。 然后,服务器端代码将根据与已知用户关联的已知令牌验证令牌。 永远不要将用户的密码以纯文本形式存储在任何地方。

你所做的不仅在安全方面非常糟糕,而且还在重新发明轮子。

ASP.Net 已经支持开箱即用的表单身份验证、默认成员资格提供程序、正确加密/哈希身份验证 cookie,甚至带有"记住我"复选框的登录控件!

您将使用如下所示的标记将控件添加到 ASP.Net 登录页:

<asp:Login ID="LoginControl1" runat="server" CreateUserUrl="Register.aspx" 
 VisibleWhenLoggedIn="False" TextLayout="TextOnTop" RememberMeSet="True">

(我们已将 DisplayRememberMe 属性设置为 true。这将指示登录控件显示"下次记住我"复选框,并指示成员资格提供程序在成功登录后将持久性身份验证 Cookie 发送到用户的浏览器。

但是,在开始尝试之前,您可能应该阅读 MSDN 上的"演练:创建具有成员资格和用户登录的网站"。