存储用户 ID 的最佳解决方案是啥?

Posted

技术标签:

【中文标题】存储用户 ID 的最佳解决方案是啥?【英文标题】:What's the best solution for storing a users id?存储用户 ID 的最佳解决方案是什么? 【发布时间】:2019-07-14 08:48:16 【问题描述】:

在 ReactJS 中存储用户 ID 以便所有组件都可以访问它的最佳方法是什么?

我已经研究过 Redux 和 Context,但它们对于仅存储一个 ID 似乎太过分了(或者我可能遗漏了什么?)。我还研究过将 ID 存储在父组件 (App) 中,但页面刷新会丢失 id :(.

【问题讨论】:

嗯,当页面刷新时,您可能应该根据您的会话再次下载用户 ID? 【参考方案1】:

会话存储可能最适合您的需求

sessionStorage 属性允许您访问当前源的会话存储对象。 sessionStorage 类似于 localStorage;唯一的区别是 localStorage 中存储的数据没有过期时间,而 sessionStorage 中存储的数据会在页面会话结束时被清除。

https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

然后您可以在需要时设置/获取 ID

sessionStorage.setItem('userID', 'value');
const USER_ID = sessionStorage.getItem('userID');

但是,要在页面关闭后保留 ID,您需要使用 localStorage

只读的 localStorage 属性允许您访问文档来源的存储对象;存储的数据跨浏览器会话保存。 localStorage 与 sessionStorage 类似,只是 localStorage 中存储的数据没有过期时间,而 sessionStorage 中存储的数据会在页面会话结束时(即页面关闭时)被清除。

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

localStorage.setItem('userID', 'value');
const USER_ID = localStorage.getItem('userID');

【讨论】:

【参考方案2】:

如果您希望您的数据在关闭并重新打开浏览器后仍然可用,LocalStorage 是存储数据的合适位置;否则,只要浏览器打开,SessionStorage 就会保留您的数据。

【讨论】:

也是正确答案,但马克给出了更多细节:)【参考方案3】:

将用户 ID 等敏感数据保存在存储空间中是个坏主意! 每次用户硬刷新他/她的浏览器时,您都需要获取此数据。请勿使用存储来节省此类费用!

【讨论】:

以上是关于存储用户 ID 的最佳解决方案是啥?的主要内容,如果未能解决你的问题,请参考以下文章

存储时间序列数据的最佳开源解决方案是啥? [关闭]

用户注册的最佳解决方案是啥? [关闭]

使用不存在和插入的最佳方法是啥?

拖放的最佳轻量级解决方案是啥?

每个用户存储大数据的最佳方式是啥? [关闭]

在系统中创建用户ID的最佳做法是什么?