我可以使用html5本地存储来存储用户authentication会话信息

快速背景:

我正在写Mongo / Express / Angular / Node SPA并使用护照我已经设置了OAuthlogin选项来处理用户authentication/授权。

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

在login时,服务器将基本的用户会话信息放入一个cookie中,以便客户端在授权callback中find,然后我使用angular-cookies的$ CookieStore访问客户端上的cookie,将其保存到rootcope并清除cookie 。

问题:

除了用户刷新浏览器的任何事件之外,这一切都是完美的,这会导致我的rootcope会话显然被清除。

所以我正在考虑在浏览器本地存储(使用store.js)中存储会话信息,然后即使在初始加载时,我也可以检查浏览器本地存储中存在的会话,并在已经有会话的情况下绕过OAuthlogin。

在用户会话信息存储在浏览器本地存储中是不是很糟糕的做法,或者是否存在一些后勤/安全问题?

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

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

它的工作方式与localStorage完全一样,但是当浏览器窗口closures时,整个sessionStorage对象将被删除 – 但是在任何页面刷新的时候都不会被删除。 这是存储会话id和类似的理想场所。

但是要警告sessionStorage在浏览器选项卡中是孤立的 – 这意味着如果你的用户select在新选项卡中打开一个链接, sessionStorage将被初始化为空。