[英]Password Reset Auth using MERN Stack
我在 nodemailer email 中实现了一个授权令牌,每当用户重置密码时就会发送该令牌。 我得到了生成的 url 以及附加的令牌设置和正确发送,我似乎无法让我的路由正确处理所述令牌的身份验证。
我的请求返回 404,表示未找到我的 GET (GET http://localhost:3000/reset/XXXXXXXXXXXX 404 (Not Found) )。 谁能帮我指出正确的方向?
这是我的服务器 api 路由
router.get('/reset', (req, res, next) => {
User.findOne({ resetPasswordToken: req.query.resetPasswordToken }).then(user => {
if (user == null) {
res.json('Password link is invalid or has expired');
} else {
res.status(200).send({
username: user.email,
message: 'Password link accepted',
})
}
})
});
还有我处理请求的代码
componentDidMount() {
console.log(this.props.match.params.token);
axios.get('/reset' + this.props.match.params.token)
.then(response => {
// Conditional logic here based on response returned
})
.catch(function (error) {
console.log(error);
})
}
您需要像这样告诉 express 期望 url 中的参数:
router.get('/reset/:token', (req, res, next) => {
// token is inside req.params.token
User.findOne({ resetPasswordToken: req.params.token }).then(user => {
if (user == null) {
res.json('Password link is invalid or has expired');
} else {
res.status(200).send({
username: user.email,
message: 'Password link accepted',
})
}
})
});
然后确保在发出请求时 url 中有一个斜线:
axios.get('/reset/' + this.props.match.params.token)
.then(response => {
// Conditional logic here based on response returned
})
.catch(function (error) {
console.log(error);
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.