【发布时间】:2016-08-24 11:54:51
【问题描述】:
我正在努力实现我自己的自定义密码重置,它会发送一封电子邮件,用户正在访问页面以重置他们的密码。
到目前为止,我已经生成了一个独特的令牌,它被放入一个 http get 请求链接并通过电子邮件发送给用户。
当用户点击链接时(例如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 发布并发布新密码,将令牌留在链接,因此我不知道哪个令牌与密码重置相关联?
//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。
【问题讨论】:
标签: javascript html node.js security passwords