Php CodeIgniter:丢失密码功能,如何实现?

Php CodeIgniter:丢失密码功能,如何实现?,php,codeigniter,Php,Codeigniter,我的一个客户有一个在CodeIgniter上运行的站点(我没有创建它,对CI知之甚少),他们想添加一个丢失密码功能,我不知道如何使用CI实现此功能。我了解PHP,我的大部分经验都来自WordPress 有人能给我指出实施这类事情的最佳实践的正确方向吗?我就是这样实施的: 用户单击链接“忘记密码” 用户键入他/她的电子邮件地址 将随机密钥和临时密码放入用户表中 您发送一封带有链接的电子邮件以激活您设置的密码。链接具有随机键 用户点击链接。链接应与随机字符串匹配 激活密码并清除临时密码和随机字符串

我的一个客户有一个在CodeIgniter上运行的站点(我没有创建它,对CI知之甚少),他们想添加一个丢失密码功能,我不知道如何使用CI实现此功能。我了解PHP,我的大部分经验都来自WordPress


有人能给我指出实施这类事情的最佳实践的正确方向吗?

我就是这样实施的:

  • 用户单击链接“忘记密码”
  • 用户键入他/她的电子邮件地址
  • 将随机密钥和临时密码放入用户表中
  • 您发送一封带有链接的电子邮件以激活您设置的密码。链接具有随机键
  • 用户点击链接。链接应与随机字符串匹配
  • 激活密码并清除临时密码和随机字符串
  • 用户登录并将其密码更改为所需的内容

CI是PHP,因此您可以像在任何其他PHP项目中一样实现它,但在控制器/模型/视图中除外。

一个好方法是:

  • 如果用户忘记了他的pwd,他将需要一个新的pwd。此时,您应该在数据库中存储哈希和时间戳
  • 向用户发送一封电子邮件,其中包含指向重置站点的链接,其哈希作为get参数存储在db中(例如,de/reset pw/[此处的用户哈希])
  • 如果用户遵循此链接,站点将检查请求和使用此链接之间经过的时间(大多数站点允许大约一天的时间差)
  • 如果所有内容都有效,用户可以输入新的pw

您当然可以使用其他系统,如机密问题等,但我更喜欢电子邮件模型,因为它具有最大的安全性(当您需要访问用户的电子邮件时,问题也可以由其他人回答)

CodeIgniter-是一个遵循MVC模式的常规php框架

它没有任何内置的身份验证库

您将不得不使用一些第三方库。其中最好的是Ion auth。


然而,如果它是一个人们可以注册的现有站点,那么很可能已经实现了一些auth库。我会在system/application/libraries(或有时是/application/libraries)文件夹下查看那里有哪些库,然后从那里开始查看。

它的工作原理与CI中的工作原理完全相同。只有您才能在CI使用的MVC体系结构中构建它。据我所知,没有通用的CI密码恢复模块。