AngularJS 中会话存储、本地存储和 Cookie 的区别

Posted

技术标签:

【中文标题】AngularJS 中会话存储、本地存储和 Cookie 的区别【英文标题】:Difference between Session Storage, Local Storage and Cookies in AngularJS 【发布时间】:2014-11-28 03:49:45 【问题描述】:

我想深入了解 Angular,为此我想知道会话存储、本地存储和 Cookie 之间的区别。

问题问题---

1) $windows.sessionStorage 可用于存储用户会话,但问题是,当您在新选项卡中打开某些内容时,它会再次要求用户登录。

2) 本地存储是否可以解决问题 1 ?如果是这样,这是否意味着我在我的应用程序中都需要本地存储和会话存储,或者本地存储也将充当会话存储。

3) 我也在努力在我的登录表单上记住我 - 为此将用户的密码和电子邮件存储在本地存储中是否安全,如果不是以角度记住我的最佳方式

4) Cookie 很棒,但公司是否允许在浏览器上使用它们?

希望能找到合适的答案

谢谢

【问题讨论】:

如果以下答案可以解决您的问题,请单击答案旁边的复选标记接受答案。这将有助于未来的用户搜索相同问题的答案。谢谢。 【参考方案1】:

localstorage 可以跨标签工作:

这里有一个演示:

http://www.undefinednull.com/2014/02/25/angularjs-real-time-model-persistence-using-local-storage/

【讨论】:

【参考方案2】:

1) sessionStorage 是临时的是正确的,并且它被设计为这样做。

2) 本地存储将解决在打开新的浏览器会话或等待很长时间后登录消失的问题,但不会,localStorage 不会充当浏览器请求的会话 cookie。

3) 许多不同的服务器端应用程序支持应用程序的加密和防篡改 cookie 支持。话虽如此,最好不要将用户密码存储在客户端中,也许是一个令牌,您的服务器可能会识别并能够解密/解码并查找正确的用户记录。

4) 我会说现在是的,cookie 通常被认为是安全的,但这总是有可能的,并且根据您的客户或受众,您可能会遇到问题。如果在浏览器中禁用 cookie,会话也将不起作用。 (虽然我对此的看法是对一般人群的猜测,即:不要引用我的话)

我的建议是在用户遇到页面时设置会话变量。然后将结果存储在 localStorage 或使用 cookie 中,然后当用户在会话结束后返回应用程序时,设置一些架构来自动重新验证和重新分配会话。

希望这会有所帮助!

编辑: 会话 Cookies 在同一窗口内的浏览器选项卡之间共享。但是 Session Storage 被指出不是。

【讨论】:

在 Angular 中,会话存储 - 在新选项卡中打开时会丢失信息。除非我做错了什么。不错的答案。谢谢 这很奇怪。您使用的是哪个浏览器?还是您在所有浏览器中都注意到了这一点? 会话存储的范围仅限于特定的选项卡/窗口,即使浏览器选项卡访问相同的 URI,它也不会在浏览器选项卡之间共享。如果您需要在两个选项卡或窗口之间共享某些内容,则需要使用localStorage。请注意,同源规则仍然适用。 @SnareChops 是的,适用于所有浏览器。 @GeekOnGadgets 我更正了我的陈述,因为 Session Storage 显然不会在选项卡之间传输,但是 Session Cookies 可以。

以上是关于AngularJS 中会话存储、本地存储和 Cookie 的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Angularjs 将数据存储在本地存储中?

原生JavaScript实现本地存储(localStorage)和会话存储(sessionStorage)

本地存储(Local Storage) 和 会话存储(Session Storage)

从angularjs中的本地存储中保存和检索复选框值

使用 angularjs 观察本地存储

使用带有 KONG API 网关的 cookie 进行 JWT 身份验证