14

快速背景:

我正在编写 Mongo/Express/Angular/Node SPA 并使用护照我设置了 OAuth 登录选项来处理用户身份验证/授权。

使用护照,我成功地在服务器上维护会话,所以我所有的 XHR 请求(需要它)都在检查登录用户。

在登录服务器时,将基本用户会话信息放入 cookie 中,供客户端在授权回调中查找,然后我使用 angular-cookies 的 $CookieStore 访问客户端上的 cookie 将其保存到 rootscope 并清除 cookie .

问题:

这工作得很好,除了用户刷新浏览器的任何事件,这会导致我的 rootscope 会话明显被擦除。

因此,我正在考虑将会话信息存储在浏览器本地存储中(使用 store.js),然后即使在初始加载时,我也可以检查浏览器本地存储中是否存在会话,如果已经存在会话,则绕过 OAuth 登录。

将用户会话信息存储在浏览器本地存储中是不好的做法还是存在一些逻辑/安全问题?

这个应用程序没有任何敏感数据,注册是免费的,登录真的只有在那里,所以我可以跟踪用户并存储在应用程序中为每个用户创建的数据。并且用户会话永远不会有密码(我只允许 OAuth 登录,没有本地选项)。

4

1 回答 1

6

而不是localStorage,看sessionStorage对象:http ://www.w3schools.com/html/html5_webstorage.asp

它的工作原理与 完全一样localStorage,但是当浏览器窗口关闭时,整个sessionStorage对象将被删除 - 但在任何页面刷新时都会保留。它是存储会话 ID 等的理想场所。

但请注意,它sessionStorage是在浏览器选项卡中隔离的 - 这意味着如果您的用户选择在新选项卡中打开链接,则该链接sessionStorage将被初始化为空。

于 2013-08-19T12:18:41.510 回答