注意:這是我第一次發帖,如果您有任何意見,請告訴我目標:我正在構建一些端點,讓用戶在忘記密碼時重設密碼。流程看起來像這樣:用戶不知道密碼,所以他們點擊忘記密碼。用戶輸入電子郵件并點擊發送用戶收到帶有重置密碼鏈接的電子郵件。單擊鏈接并被重定向以輸入他們的新密碼。他們點擊“保存”,他們被重定向到登錄以使用他們的新密碼登錄我正在使用 Insomnia 來達到測試的終點。正在工作的事情:當提供電子郵件以重置密碼時,Nodemailer 會發送一封電子郵件。更新密碼時,它會顯示“密碼已更新”并給出 200 狀態。錯誤:嘗試使用該新密碼登錄后,它不會保存到數據庫中。只有舊密碼才能讓您重新登錄。我嘗試過的事情:我嘗試更改我的 user.model 以使用我的 findByEmail 函數并遇到了一些奇怪的錯誤,這讓我陷入了困境。我嘗試了控制臺日志記錄很多事情,看看我是否可以追蹤路徑。我嘗試更改 user.update 函數,但無法使其正常工作。這是我的代碼: 任何指導將不勝感激。如果您需要查看任何其他文件,請告訴我。忘記密碼.jsconst router = require('express').Router();const crypto = require('crypto')const User = require('../models/users.model')const nodemailer = require('nodemailer')router.post('/forgotpassword', (req, res) => { let { email } = 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({ email }) .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}` } })
使用 NodeJs/Knex/Nodemailer 的忘記密碼功能無法正常工作
Smart貓小萌
2023-03-18 16:25:10