【发布时间】:2011-12-29 23:52:05
【问题描述】:
我有一个用户通过 Web 服务登录到后端应用程序的页面。 Web 服务返回一个会话 ID,我想在 cookie 中存储 40 分钟,因为 40 分钟后后端应用程序会自动关闭会话。
我编写 cookie 的代码:
private void SetCookie()
{
Response.Cookies.Add(new HttpCookie("Cookie_SessionID"));
Response.Cookies["Cookie_SessionID"].Value = ni.NicheSessionID;
Response.Cookies["Cookie_SessionID"].Expires = DateTime.Now.AddMinutes(40);
//.... after a few more things
Response.Redirect(returnUrl);
}
然后在接收页面上我有这个:
private HttpCookie GetCookie()
{
HttpCookie cookie = Request.Cookies["Cookie_SessionID"];
if (cookie != null && cookie.Value != null)
{
return cookie;
}
return null;
}
由于某种原因,GetCookie() 返回的 cookie 始终具有 Expires 值 0001-01-01 00:00:00,即使当我在浏览器中查看 cookie 时它具有正确的到期时间。
阅读 this 哪些状态过期的 cookie 根本没有发送到服务器,我认为可能发生的情况是 cookie 正在正确写入,但浏览器没有发送 到期日期,因为它实际上是不必要的?...
我的问题是我想准确地捕捉到 - cookie 已“过期”,因此他们必须再次登录 - 但我需要显示一条消息,如“我知道你已经登录但你'将需要再做一次”类型的事情。
谢谢
【问题讨论】: