我有一个由带有Codeigniter和REST_Controller的PHP API组成的系统。
当用户要求重置密码时,系统会生成一个随机数,并将其嵌入通过邮件发送给用户的URI中。
当用户单击它时,它会调用REST_Controller / Codeigniter中的一个函数,该函数读取嵌入的数字并确定它是否有效。如果是,则向用户呈现具有用于更改密码的表单的网站。
现在,主要问题。当用户单击“提交”按钮发送新密码时,客户端是否必须在REST_Controller / Codeigniter中调用另一个函数?如果是这样,我如何验证带有数据的提交请求来自用户,而不是来自互联网的随机请求?
我在这里缺少什么?
答案 0 :(得分:0)
我刚使用了以下方法:
用户单击带有嵌入在URI中的令牌的链接,该链接向服务器上运行的函数PasswordRecovery1发出GET请求,该函数验证令牌。
如果令牌有效,则在客户的计算机上设置一个cookie,其中包含用户' ID和发送回客户端计算机的相同令牌。
然后向用户显示由密码输入字段和提交按钮组成的网页。
在提供新密码后,用户单击“提交”,这将发出POST请求以启动获取新密码的PasswordRecovery2,然后从客户端的计算机读取cookie。
PasswordRecovery2函数检查从cookie读取的令牌是否有效,如果是,则更改密码。
我希望这是一种正确的方法。