【发布时间】:2016-01-19 03:04:39
【问题描述】:
app.post('/reset/:token', function(req, res) {
async.waterfall([
function(done) {
User.findOne({ 'local.resetPasswordToken' : req.params.token, 'local.resetPasswordExpires' : { $gt: Date.now() } }, function(err, user) {
if (!user) {
req.flash('resetMessage', req.params.token);
return res.redirect('back');
}
], function(err) {
res.redirect('/');
});
});
app.get('/reset/:token', function(req, res) {
User.findOne({ 'local.resetPasswordToken': req.params.token, 'local.resetPasswordExpires' : { $gt: Date.now() } }, function(err, user) {
if (!user) {
req.flash('forgotMessage', req.params.token );
return res.redirect('/forgot');
}
res.render('reset.ejs', { user: req.user, message: req.flash('resetMessage') });
});
});
<!--Reset.ejs page ResetPassword FORM -->
<form action="/reset/:token" method="post">
<div class="form-group">
<label>New Password</label>
<input type="text" class="form-control" name="newpassword">
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="text" class="form-control" name="confirmpassword">
</div>
<button type="submit" class="btn btn-warning btn-lg">Reset</button>
</form>
单击后,我可以使用 req.params.token 获取“帖子”的令牌 http://localhost:8080/reset/fed831abf73150c96f6a3e392b5cbdcaccdeb9bd
后来,当我通过 reset.ejs 提交“get”时,我无法使用 req.params.token 检索到任何令牌值。
有什么解决办法吗?
【问题讨论】:
-
您没有将实际令牌传递给表单操作。
-
表单操作使用“/reset/:token”,但我希望 Tedd 在这里填写实际令牌而不是“:token”。
-
我无法弄清楚我应该如何写它才能在那里填充它。
-
您是否打开了浏览器的调试器并检查了实际的 GET 请求?这可能会有所帮助。