【问题标题】:Session lost when saving cookie保存 cookie 时会话丢失
【发布时间】:2012-02-22 09:55:12
【问题描述】:

成功登录后,我想保存一个包含用户名的 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);

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

【问题讨论】:

  • 会话是什么意思? ASP.NET 会话?还是形成身份验证会话?另外,您正在执行哪些操作?您是否正在关闭浏览器?
  • 从登录表单导航到下一个表单时,正在重置 ASP.NET 会话。这只是在添加上面的代码之后。
  • 上面的代码是在登录表单中,还是在其他地方?
  • 您如何看到正在重置 ASP.NET 会话?您是否获得了新的 SessionID 或者您通过 Session["YourKey"] 存储的值消失了?我认为您混淆了 Asp.net 会话,并且真的在谈论不再登录。
  • @MalcolmFrexner 未使用 .Net 安全性,一旦保存 cookie 并使用 response.redirect 导航到同一 web 应用程序中的下一个表单,会话 ["mykey"] 变量都已消失。

标签: c# asp.net session cookies


【解决方案1】:

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

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

谢谢, 弗兰

【讨论】:

    【解决方案2】:

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

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

    我最近在 MSDN 上看到了一个旧示例,该示例显示删除方法会破坏您的会话...read the article

    如果是这样,请确保只删除用于登录的 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 中使用子键。

    【讨论】:

    • 非常感谢,当我“不记得”无名 cookie 时,会话变量丢失了,我正在删除所有 cookie 对象,包括会话 ID。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 2023-03-28
    • 2020-05-02
    • 2018-01-23
    • 2015-12-07
    • 2013-11-18
    • 2019-10-20
    • 2011-01-13
    相关资源
    最近更新 更多