我有一个cookie用于持久保存用户的用户ID,但我很难用新值替换它。根据MSDN,我应该能够简单地覆盖该值,但它一直没有工作。我正在处理程序中执行登录逻辑,并且如果用户成功则将用户传递到新网页。
public void ProcessRequest(HttpContext context)
{
User user = User.FindByUsernameAndPassword(
context.Request.Form["username"],
context.Request.Form["password"]);
context.Response.Cookies["user_id"].Value = user.ID.ToString();
context.Response.Redirect("/profile", true);
}
我第一次登录时运行良好,但如果我尝试通过使用新用户ID命中处理程序来覆盖当前cookie,则不会更改cookie值并继续以用户身份登录我什么时候碰到它。
其他网页使用Cookie登录,但由于用户ID未更改,因此不会更改已登录的用户。
public User User { get; set; }
public override void Page_Load()
{
this.User = User.Find(int.Parse(Request.Cookies["user_id"].Value));
}
答案 0 :(得分:6)
尝试添加.Value
context.Response.Cookies["user_id"].Value = user.ID.ToString();
答案 1 :(得分:4)
根据MSDN site,您已经编写了一个具有相同名称的新cookie,而不仅仅是修改它:
修改和删除Cookie
您无法直接修改Cookie。 相反,更改cookie包含 使用新值创建新cookie 然后将cookie发送给 浏览器覆盖旧版本 在客户端上。以下代码 示例显示了如何更改 存储计数的cookie的值 用户访问该网站的内容:
int counter;
if (Request.Cookies["counter"] == null)
counter = 0;
else
{
counter = int.Parse(Request.Cookies["counter"].Value);
}
counter++;
Response.Cookies["counter"].Value = counter.ToString();
Response.Cookies["counter"].Expires = DateTime.Now.AddDays(1);
我同意关于添加.Value属性的第一篇文章,然后也可以添加.Expires,看看会发生什么。