我正在实施自己的自定义密码重设,发送用户正在进入页面以重置密码的电子邮件。node js - 如何安全地将标记从http获取请求传递给html页面?
到目前为止,我已经生成了一个独特的令牌,它被放入http get request链接并通过电子邮件发送给用户。
当用户点击链接(例子mywebsite.com/verifypasswordreset?id=96rZyAWLTu)
我有获取令牌明示路线:
//Verify Password Reset
app.get('/verifypasswordreset', function(req, res) {
Parse.Cloud.run('verifyPasswordReset', { token: req.param("id") }, {
success: function(user) {
res.sendFile(path.join(__dirname + '/website/resetpassword.html'));
},
error: function(error) {
res.sendFile(path.join(__dirname + '/website/404.html'));
}
});
});
我然后运行一个Parse云代码功能验证如果令牌存在且如果是这样,它通过发送包含重置密码的表单的HTML进行响应。 (resetpassword.html)
此时resetpassword.html页面的URL仍然嵌在它的令牌(mywebsite.com/verifypasswordreset?id=96rZyAWLTu),然而,只要用户提交表单,它确实一个HTTP POST和岗位的新密码,离开令牌背后链接,因此我不知道哪个令牌与密码重置相关联?
//Reset Password
app.post('/resetpassword', function(req, res) {
res.send('You sent the password "' + req.body.password + '".');
});
当用户提交表单更改其密码,如何能以某种方式从当前URL(mywebsite.com/verifypasswordreset?id=96rZyAWLTu)获得令牌并将其包含在HTTP POST请求,所以我的节点JS的应用程序可以读取它,知道哪些令牌与密码重置相关联?
或者,更好的方法是跟踪令牌吗?
*注意忽略我正在使用http我打算购买SSL证书并在启动前使用https。
2016-04-29
Josh