【问题标题】:Where Actually asp.net mvc httpcookies are stored?实际上 asp.net mvc httpcookies 存储在哪里?
【发布时间】:2016-06-17 17:49:59
【问题描述】:

如果用户点击登录视图上的记住我复选框,我会使用 cookie 存储用户 ID 和密码

 HttpCookie UserID = new HttpCookie("UserID");
 HttpCookie Password = new HttpCookie("Password");

 UserID.Value = vm.UserID;
 UserID.Expires = DateTime.Now.AddDays(30);
 Password.Value = vm.Password;
 Password.Expires = DateTime.Now.AddDays(30);

 Response.Cookies.Add(UserID);
 Response.Cookies.Add(Password);

我很清楚浏览器 cookie,但它保持不变,这意味着当用户打开登录视图时,用户 ID 和密码字段会自动填写。 那么这些cookies实际存储在客户端还是服务器端呢? 如果他们愿意,用户如何清除这些 cookie?

【问题讨论】:

标签: c# asp.net-mvc cookies


【解决方案1】:

浏览器负责管理用户系统上的 cookie。 Cookies 通过 HttpResponse 对象 发送到浏览器,该对象公开了一个名为 Cookies 的集合。您可以将 HttpResponse 对象作为 Page 类的 Response 属性来访问。您要发送到浏览器的任何 cookie 都必须添加到此集合中。 创建 cookie 时,您需要指定名称和值。每个 cookie 必须有一个唯一的名称,以便以后从浏览器读取它时可以识别它。由于 cookie 是按名称存储的,因此将两个 cookie 命名为相同会导致其中一个被覆盖。

您可以通过多种方式将 cookie 添加到 Cookie 集合中。

例子

Response.Cookies["userName"].Value = "Tim";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

 HttpCookie aCookie = new HttpCookie("lastVisit");
 aCookie.Value = DateTime.Now.ToString();
 aCookie.Expires = DateTime.Now.AddDays(1);
 Response.Cookies.Add(aCookie);`

使用Expires函数并指定时间

cookie 可能仍然存在,因为您再次从服务器端发送它

aCookie.Expires = DateTime.Now.AddMinutes(1.0);

这将在距当前时间 1 分钟后删除该 cookie

   aCookie.Expires = DateTime.Now.AddDays(-1);

这将在前 1 天即昨天删除该 cookie

【讨论】:

    【解决方案2】:

    HttpCookie 如果你有时间限制存储,所以它是共享硬盘,但如果你为你的应用程序使用非持久性cookie,它非常有用并且只有在浏览器打开时才有效。当用户关闭浏览器时,cookie被丢弃。

    使用来自 https://msdn.microsoft.com/en-us/library/ms178194.aspx

    的参考资料

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      相关资源
      最近更新 更多