成功登录后,我想保存一个包含用户名的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);
非常感谢任何帮助,谢谢
答案 0 :(得分:2)
有点狂野,但你是否正在从https转向http?例如。登录表单为https,以下页面为http
如果是这样,大多数浏览器都会丢弃会话cookie。
谢谢, 弗兰
答案 1 :(得分:1)
我最近看到一篇文章表明页面名称中的下划线可能会导致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中使用子键。