3

我想创建和持久化 cookie 来存储一些用户信息——即他们的一些偏好、他们的头像等。我希望这些 cookie 保留在用户的计算机上,直到它们被用户或我的应用程序删除。

我在我的 ASP.NET MVC 应用程序中使用 Facebook/Google 身份验证,所以我已经使用了 cookie,但是当用户结束他/她的会话时它们会过期。

做我想做的事情的正确方法是什么?我可以想到两种方法:

  1. 不要使 cookie 过期,而是更改其中的值以指示用户的会话已过期。
  2. 创建另一个具有不同名称的 cookie,用于存储用户信息/首选项。

我想看看其他人是如何处理这件事的。

4

1 回答 1

2

您可以创建超长过期 cookie,但这不是在用户浏览器上存储持久用户信息的最佳方式。

例如,cookie 被限制为 4096 字节,如果您想存储图像(用户头像),则限制为 4096 字节。此外,无论您是否想访问它们,cookie总是会随着您的连接上下波动-> 浪费带宽。

如果您正在开发一个强大的客户端应用程序,我可以谦虚地建议您使用本地存储吗?这种支持更加普遍(http://caniuse.com/#search=localstorage),它会一直持续到被删除,并且不会因 cookie 的所有问题而受到影响。

我建议您查看此 SO 答案(Local Storage vs Cookies)以获取有关 cookie 与 localstorage 的更多详细信息。

如果您需要几个本地存储使用示例,可​​以查看此链接 ( https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage )。例如:

   function setInfo(key, data) {
    if (!window.localStorage) {
        window.localStorage.setItem(key, data);
    } else {
        console.log('Local Storage: not supported');
    }
}
于 2016-03-16T12:20:13.653 回答