【问题标题】:Persisting user cookie持久化用户 cookie
【发布时间】:2016-06-24 17:19:21
【问题描述】:

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

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

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

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

我想看看其他人是如何处理这个问题的。

【问题讨论】:

    标签: asp.net session cookies asp.net-core-1.0


    【解决方案1】:

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

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

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

    我建议您查看此 SO 答案 (Local Storage vs Cookies) 以了解有关 cookie 与本地存储的更多详细信息。

    如果您需要几个本地存储使用示例,可​​以查看此链接 (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');
        }
    }
    

    【讨论】:

    • 感谢您的回复。顺便说一句,我并不是说我会保存实际的头像图像。只是头像文件的网址。
    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 2011-02-20
    • 1970-01-01
    • 2020-06-14
    • 2013-05-14
    • 2017-04-29
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多