angularjs - 我可以使用 html5 本地存储来存储用户身份验证 session 信息吗

标签 angularjs node.js session local-storage passport.js

快速背景:

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

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

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

问题:

除了用户刷新浏览器的任何事件之外,这一切正常,这会导致我的 rootscope session 明显被删除。

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

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

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

最佳答案

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

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

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

关于angularjs - 我可以使用 html5 本地存储来存储用户身份验证 session 信息吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504711/

相关文章:

session - 如何在 DropWizard 中维护用户 session ?

javascript - 如何在客户端脚本中导入实用方法

javascript - 如何在 Mongoose 中定义一个不同于 _id 的主键?

node.js - NodeJS cookie 不适用于 Express 4 中的 session

javascript - 使用 jquery find 在 Angular Directive(指令)中获取 dom 元素

javascript - GraphQL:为构建模式提供的一种类型缺少名称

php - 显示 session 数组中的所有项目。仅显示顶部项目

javascript - 将 javascript 对象成员投影到数组中

javascript - 指定 select 选项的不同方式

javascript - 如何从 promise 方法内部访问 Angular js Controller 的 "this"?