0

这是一个多部分的问题,因此请随时就任何一个部分提供意见,但由于我只能接受一个答案,因此我将接受与所提出的所有问题相关的最完整的答案。如果它们相关且有用,我将支持部分答案。

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

第1部分:

我已经建立了一个用户认证系统。登录具有“记住我”功能(目前还没有功能)——存储用户数据的最佳方式是什么?一些想法:

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

第2部分:

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

4

1 回答 1

1

第1部分

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

第2部分

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

于 2012-08-23T05:34:33.180 回答