Я пытаюсь получить значение токена по следующему URL http://localhost:3000/users/reset/e3b40d3e3550b35bc916a361d8487aefa30147c8
.У меня есть запрос на получение, который проверяет, является ли токен действительным, и перенаправляет пользователя на экран сброса пароля.У меня также есть почтовый запрос, но когда я утешаю req.params.token
, он выводит :token
вместо e3b40d3e3550b35bc916a361d8487aefa30147c8
.Мне интересно, правильно ли выполнено действие формы, но я не знаю, как из него получить значение токена.
Сбросить пароль Получить запрос
router.get('/reset/:token', (req, res) => {
console.log(req.params.token) // e3b40d3e3550b35bc916a361d8487aefa30147c8
User.findOne({
resetPasswordToken: req.params.token,
resetPasswordExpires: {
$gt: Date.now()
}
}, (err, user) => {
if (!user) {
req.flash('error_msg', 'The password reset token is invalid or has expired.')
return res.redirect('/users/forgot')
}
res.render('reset')
})
})
reset.ejs
<% include ./partials/messages %>
<form action="/users/reset/:token" method="POST">
<div class="form-group">
<label for="password">Password</label>
<input type="password" id="password" name="password" class="form-control" placeholder="Please enter a password."
value="<%= typeof password != 'undefined' ? password : '' %>" />
</div>
<button type="submit" class="btn btn-primary btn-block">Register</button>
</form>
Сбросить пароль Отправить запрос
router.post('/reset/:token', (req, res) => {
console.log(req.params.token) // :token
User.findOne({
resetPasswordToken: req.params.token,
resetPasswordExpires: {
$gt: Date.now()
}
}, (err, user) => {
if (!user) {
req.flash('error_msg', 'The password reset token is invalid or has expired.')
return res.redirect('/users/forgot')
}
user.password = req.body.password;
user.resetPasswordToken = undefined;
user.resetPasswordExpires = undefined;
user.save(function (err) {
req.flash('success_msg', 'Working.')
return res.redirect('/users/login')
})
})
})