修改Cookie';s HttpHandler中的值
本文关键字:HttpHandler Cookie 修改 | 更新日期: 2023-09-27 17:58:53
我有一个cookie,用来保存用户的userid,但我很难用新值替换它。根据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));
}
尝试添加.Value
context.Response.Cookies["user_id"].Value = user.ID.ToString();
根据MSDN网站,您已经编写了一个同名的新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,看看会发生什么。