3

我已经建立了一个基于这些原则的持久登录应用程序(来自:http: //jaspan.com/improved_persistent_login_cookie_best_practice

  1. 当用户在选中记住我的情况下成功登录时,除了标准会话管理 cookie 之外,还会发出一个登录 cookie。[2]
  2. 登录 cookie 包含用户的用户名、系列标识符和令牌。系列和令牌是来自适当大空间的不可猜测的随机数。这三者一起存储在数据库表中。
  3. 当未登录用户访问该站点并显示登录 cookie 时,会在数据库中查找用户名、系列和令牌。
  4. 如果存在三元组,则认为用户已通过身份验证。使用的令牌将从数据库中删除。生成一个新令牌,并使用用户名和相同的系列标识符存储在数据库中,并向用户发出一个包含所有三个的新登录 cookie。
  5. 如果存在用户名和系列但令牌不匹配,则假定为盗窃。用户会收到措辞强硬的警告,并且用户记住的所有会话都将被删除。
  6. 如果用户名和系列不存在,则忽略登录 cookie。

我了解在初始身份验证成功后我重新颁发了一个新令牌。但是,我是否会在其他需要身份验证的页面上重新发出新令牌,并继续检查该持久性 cookie。

还是在初始成功身份验证后,将用户标记为已登录,并且仅从该点开始通过会话进行身份验证,并保存初始重新发布的 cookie,以供当前会话到期后用户尝试访问该站点时使用(即关闭浏览器等)?

4

2 回答 2

0

我会投票给第二个选项。如果不出意外,持续更新 auth cookie 会影响性能。(小但仍然没有必要)。登录成功后,写入cookie。用户进入站点后,仅使用会话值。

于 2012-09-25T19:32:07.137 回答
0

只有当用户尝试在没有当前会话 cookie 的情况下访问站点时,您才检查登录 cookie。这就是我将如何解释原则#3。

未登录用户访问该站点并显示登录 cookie 时,会在数据库中查找用户名、系列和令牌。

(强调我的。)

此外,从逻辑上考虑,如果您要在每次页面加载时检查并重新发出登录 cookie,那么同时使用会话 cookie 和登录 cookie 是没有意义的。

于 2012-09-25T19:32:18.353 回答