用户认真“记住我”

时间:2012-08-23 05:27:54

标签: php javascript jquery cookies local-storage

这是一个多部分问题,所以请随意提供任何一个部分的输入,但由于我只接受一个答案,我将接受与之相关的最完整答案所有这一切都被问到了。如果它们相关且有用,我将赞成部分答案。

首先,有一点背景,没有TL; DR问题:我正在使用Quake Framework(是的,这是我的)这个项目 - 要快速描述它,它使用 CodeIgniter jQuery 1.8.0 主要(除此之外,它们与问题无关。)它还包括Total Storage jQuery插件(用于本地存储)和jQuery Cookies作为浏览器的后备不支持本地存储。

第1部分:

我已经构建了一个用户身份验证系统。登录具有“记住我”功能(尚未使用) - 存储用户数据的最佳方式是什么?一些想法:

  • 将用户名和sha1'd密码存储在本地存储/ cookie中。在我看来,这似乎是一种可能不安全的选择,但我不确定。
  • 在localstorage / cookie和数据库中存储某种哈希值(可能是PHP的com_create_guid()?)(可能还有到期日期?)

第2部分:

实施“记住我”功能后,完成实施的最佳方法是什么?我是否应该检查每个页面的cookie(因为用户最初可以点击任何页面并需要重新登录?)当然每个页面都需要检查会话,并且一旦它们被cookie /本地存储重新记录,他们会得到一个常规会话,检查每个页面上的会话和cookie似乎非常多余(我们当然首先检查会话,以便我们不会重复检查登录用户的cookie,然后检查cookie是否没有会话,但仍然。)有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

第1部分

最好在服务器中生成随机令牌(您提到的哈希),并将其保存在数据库和cookie中。使其随机化将阻止其他人“猜测”或生成令牌。使用GUID将是您的最佳选择。

第2部分

在每个页面中,您可以检查会话是否存在。如果没有可用的会话,请检查您的身份验证cookie。如果auth cookie可用,则触发您的auth-check代码。这样,您只需在用户尚未登录时检查auth cookie。