CakePHP忘了密码

时间:2011-05-15 23:53:33

标签: php cakephp

您好我正在寻找使用CakePHP创建一个简单的忘记密码系统,用户将在其中输入用户名/电子邮件,然后收到一封电子邮件,其中包含可以单击以创建新密码的链接。

我用Google搜索但没找到任何东西:/

使用CakePHP 1.3

3 个答案:

答案 0 :(得分:12)

  1. 显示带有表单的视图,以便用户可以输入他们的电子邮件地址。
  2. 将表单发布到reset_password控制器操作。
  3. reset_password控制器操作中查找this->data['User']['email']并将电子邮件地址存储在数据库表中。
  4. 此相同的数据库表应包含keytoken字段。该字段应为CHAR(40)。在reset_password操作中执行$key = Security::hash(String::uuid(),'sha1',true)以创建密钥或哈希,并将其存储在keytoken字段中。
  5. 要生成URL,请在控制器$url = Router::url( ($this->here), true ).'/'.$key操作中执行reset_password。这将根据当前操作生成一个URL,并在其中附加一个关键参数,当用户单击该电子邮件链接时,您可以在该功能中验证该参数。
  6. 您还需要设置Email组件,以便在邮件正文中实际发送包含上面生成的URL的电子邮件。
  7. 这足以让你朝着正确的方向前进。

答案 1 :(得分:3)

  • 询问用户的电子邮件。
  • 生成一个足够长度的随机字符串,将其存储在您的数据库中,并将其作为链接与其电子邮件一起通过电子邮件发送给他们。让它在24小时后到期。如果他们没有请求新密码,请告诉他们忽略该电子邮件。
  • 匹配数据库中的电子邮件和字符串。向他们提供表格以输入新密码通过电子邮件向他们发送新密码(不同的随机字符串)。

答案 2 :(得分:2)

您可以查看两个可能符合您要求的预制解决方案:

Jedt的Spark插件 - https://github.com/jedt/spark_plug

CakeDC的用户插件 - https://github.com/CakeDC/users

两者都有“忘记密码”功能。您可以将其中一个插件包含在项目中,从而充分利用所有代码,或者您可以简单地挖掘他们的代码,使其在您自己的项目中工作。

相关问题