如果我有redux,是否有关于何时使用本地存储或不使用状态信息的规则?
例如,如果我有一个在线表单,那么
Q1。当用户关闭选项卡或浏览器时,我是否应该将其状态(当前填充的值)持久化到本地存储,以便当用户重新访问网页时,我可以从本地存储重新加载redux中的状态?在本地存储中存储redux状态是否有任何众所周知的/文档化的安全考虑?
Q2。或者当用户打开浏览器后第一次访问网站时,我应该总是从服务器发送最后保存的redux状态(而不是从本地存储保存和加载)。如果是这样的话
Q3。如果Q2的答案是肯定的,那么JWT呢?我们是否应该将JWT存储在本地存储器中以避免强制用户重新登录?
Q1
在OAuth最佳当前实践方面,我会避免在本地存储中存储这样的内容:
- 信用卡号码
- <
- 访问令牌/gh>
- 个人身份信息,如姓名、电子邮件
使用浏览器存储简单数据,如OAuth重定向前的应用程序路径,或简单的布尔首选项。首选会话存储而不是本地存储,除非您需要跨多个浏览器选项卡进行设置。
Q2
使用服务器对于任何敏感的东西都是最安全的,所以值得投资于API驱动的保存和加载选项。
第三季度
避免本地存储中的jwt,因为有更多的攻击向量可能导致数据被盗。如果您正在从这个模型迁移,那么首先将刷新令牌存储在加密的HTTP OnlySameSite=strict
cookie中,并将访问令牌仅存储在内存中。
这将使您能够避免在页面重新加载或当用户打开一个新的浏览器选项卡时登录,并且很容易通过一个实用程序API路由令牌请求实现。然后,您可以进一步将访问令牌完全从浏览器中取出。有关更多相关细节,请参阅SPA最佳实践文章。
看情况。
Q1。如果它是不更新的数据,并且您不需要向后端请求它。您可以使用localstorage
localstorage的安全问题是用户可以访问它并更改或删除数据。在这种情况下,你需要再次访问api获取数据。
Q2。如果数据正在更新(例如-帖子,喜欢在博客应用程序)。然后,您需要向服务器发出请求以获取最新的数据。
第三季。是的,大多数jwt存储在localStorage中,避免用户重新登录。如果用户试图修改jwt,后端有方法来检查它。阅读jwt工作原理