2017-03-15 90 views
-1

我有一个包含Codeigniter和REST_Controller的PHP API的系统。Codeigniter - 用于重置密码的表单

当用户要求重置密码时,系统会生成一个随机数并将其嵌入到由用户邮件发送的URI中。

当用户点击它时,它会调用REST_Controller/Codeigniter中的函数读取嵌入的数字和detemines(如果它是有效的)。如果是,则向用户呈现具有更改密码的表单的网站。

现在,主要问题。当用户单击提交按钮发送新密码时,客户端是否必须调用REST_Controller/Codeigniter中的另一个函数?如果是这样,我如何验证提交数据的请求来自用户,而不是来自互联网的随机请求?

我在这里错过了什么?

+0

通过使用会话,因为重置用户需要登录。 –

+0

曾经有过蜜罐田吗? –

+0

我想你需要验证生成的“随机数”来验证它是否与您生成并通过邮件发送的相同 –

回答

0

我只是用以下方法:

  1. 用户点击与嵌入在所述URI的令牌的链接,这使得GET请求到在服务器上运行的功能PasswordRecovery1,验证了令牌。

  2. 如果令牌有效,则在客户端计算机上使用用户ID和相同令牌将cookie发送回客户端计算机。

  3. 然后向用户呈现包含密码输入字段和提交按钮的网页。

  4. 提供新密码后,用户单击提交,该提交会发出POST请求来运行PasswordRecovery2,该请求会抓取新密码,然后从客户机中读取该cookie。

  5. PasswordRecovery2函数检查从cookie中读取的令牌是否有效,如果是,则更改密码。

我希望这是一个正确的方法。