注意:这是我第一次发帖,如果您有任何意见,请告诉我
目标:我正在构建一些端点,让用户在忘记密码时重设密码。流程看起来像这样:
用户不知道密码,所以他们点击忘记密码。
用户输入电子邮件并点击发送
用户收到带有重置密码链接的电子邮件。单击链接并被重定向以输入他们的新密码。
他们点击“保存”,他们被重定向到登录以使用他们的新密码登录
我正在使用 Insomnia 来达到测试的终点。
正在工作的事情:
当提供电子邮件以重置密码时,Nodemailer 会发送一封电子邮件。
更新密码时,它会显示“密码已更新”并给出 200 状态。
错误:
尝试使用该新密码登录后,它不会保存到数据库中。只有旧密码才能让您重新登录。
我尝试过的事情:
我尝试更改我的 user.model 以使用我的 findByEmail 函数并遇到了一些奇怪的错误,这让我陷入了困境。
我尝试了控制台日志记录很多事情,看看我是否可以追踪路径。
我尝试更改 user.update 函数,但无法使其正常工作。
这是我的代码: 任何指导将不胜感激。如果您需要查看任何其他文件,请告诉我。
忘记密码.js
const router = require('express').Router();
const crypto = require('crypto')
const User = require('../models/users.model')
const nodemailer = require('nodemailer')
router.post('/forgotpassword', (req, res) => {
let {
} = req.body
console.log(req.body)
// if (req.body.email === '') {
// res.status(400).json({ message: 'Email is required'})
// } console.error(req.body.email)
User.findBy({
})
.first()
.then(user => {
if (user === null) {
res.status(403).json({
message: 'Email not in db'
})
} else {
const token = crypto.randomBytes(20).toString('hex')
User.update({
resetPasswordToken: token,
resetPasswordExpires: Date.now() + 3600000,
})
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: `${process.env.EMAIL_USER}`,
pass: `${process.env.EMAIL_PASS}`
}
})
浮云间
相关分类