保存cookie时会话丢失

本文关键字:会话 cookie 保存 | 更新日期: 2023-09-27 18:21:59

成功登录后,我想保存一个包含用户名的cookie。

cookie正确保存并正确加载用户名,但会丢失会话!

检索用户名的代码是:

if (Request.Cookies["userName"] != null)
{
  txtEmail.Text = Request.Cookies["username"].Value;
  chkRemember.Checked = true;
}

保存用户名的代码是:

HttpCookie aCookie = new HttpCookie("username");
aCookie.Value = txtEmail.Text;
aCookie.Expires = DateTime.Now.AddYears(5);
Response.Cookies.Add(aCookie);

任何帮助都将不胜感激,谢谢

保存cookie时会话丢失

有点疯狂,但你正在从https转向http吗?例如,登录表单是https,下面的页面是http

如果是这样,大多数浏览器将放弃会话cookie。

谢谢,Fran

我最近看到一篇文章,认为页面名称中的下划线可能会导致cookie出现问题,我还没有对此进行研究,但可能值得检查。

或者,如果用户不选择被记住,您是否会清除cookie?

我最近在MSDN上看到了一个旧的例子,显示了删除方法,该方法将丢弃您的会话。。。阅读文章。

如果是这样,请确保只删除登录的cookie,否则您可能会丢失包含sessionid的cookie。

文章代码:的(非常)快速翻译成csharp

    for (int i = 0; i < limit; i++)
    {
        cookieName = Request.Cookies[i].Name;
        aCookie = new HttpCookie(cookieName);
        aCookie.Expires = DateTime.Now.AddDays(-1);
        Response.Cookies.Add(aCookie);
    }

解决方案是在cookie名称上添加一个复选框。

    for (int i = 0; i < limit; i++)
    {
        cookieName = Request.Cookies[i].Name;
        if (cookieName == "username")
        {
            aCookie = new HttpCookie(cookieName);
            aCookie.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(aCookie);
        }
    }

另外,别忘了你可以在cookie中使用子密钥。