2013-07-06 34 views
13

QUICK背景:我可以使用HTML5本地存储用于存储用户认证会话信息

我正在写一个蒙戈/快速/角/节点SPA和使用护照我所建立的OAuth登录选项来处理用户身份验证/授权。

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

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

问题:

这是除了在用户刷新浏览器,这将导致我rootscope会议,显然得到消灭任何情况下正常使用。

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

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

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

+0

取决于。但请确保我无法修改我的本地存储以在您的网站上创建有效的登录名。这将是讨厌的。 –

+0

我只会存储一个会话ID,我可能会存储在一个cookie中。 –

+0

@MarkusMikkolainen由于能够进入和修改本地存储中的对象,Cookie是更好的选择吗? –

回答

6

取而代之的是localStorage的,看sessionStorage对象:http://www.w3schools.com/html/html5_webstorage.asp

它的工作原理完全一样localStorage,但在关闭浏览器窗口的整个sessionStorage对象将被删除 - 但将生存任何页面刷新。它是存储会话ID和类似内容的理想场所。

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

+5

自动登录怎么办?或持久登录? – CMCDragonkai