'记住我'在CodeIgniter中登录

and*_*dyk 10 session login codeigniter

你如何在CodeIgniter中实现这一点?

Pau*_*xon 33

(这个答案是对原始问题的回答)

你会怎么做?或者,您如何创建一个有效期比其他会话更长的会话?

所有创建的会话都将在配置文件中使用相同的$ config ['sess_expiration'](默认值:7200秒),有没有办法传递自定义值?

延长会话cookie的到期时间对于"记住我"功能不起作用,因为用户在关闭浏览器时将丢失其会话cookie.如果Code Igniter没有本机"记住功能",那么你需要写一些内容来删除一个长寿命的cookie,其中包含的信息允许在服务器再次看到它时自动登录.

关于持久性登录Cookie最佳实践的文章很好,可以归纳为:

  1. 当用户使用"记住我"选中成功登录时,除了标准会话管理cookie之外,还会发出登录cookie.2
  2. 登录cookie包含用户的用户名和来自适当大空间的随机数(此处为"令牌").用户名和令牌作为一对存储在数据库表中.
  3. 当未登录的用户访问该站点并显示登录cookie时,将在数据库中查找用户名和令牌.1.如果该对存在,则认为用户已通过身份验证.使用的令牌将从数据库中删除.生成新令牌,使用用户名存储在数据库中,并通过新的登录cookie发布给用户.2.如果该对不存在,则忽略登录cookie.
  4. 仅通过此机制进行身份验证的用户不得访问某些受保护的信息或功能,例如更改密码,查看个人身份信息或花钱.要执行这些操作,用户必须首先成功提交普通用户名/密码登录表单.
  5. 由于该方法允许用户具有来自不同浏览器或计算机的多个记忆登录,因此为用户提供了在单个操作中擦除所有记住的登录的机制.

另一篇文章在改进的持久登录Cookie最佳实践中为这些想法构建了更多安全

如果你遵循这些文章中的做法,你就不会出错!