Я новичок в бэкэнде и получил задачу проверить адрес электронной почты при регистрации пользователя POST /register
Так что в user.controller.js файле я использую Hash для создания user.email адрес секретного ключа.
const secret = crypto.randomBytes(20);
const hash = crypto.createHmac('sha256', secret)
.update(secret + user.email)
.digest('hex');
console.log(hash);
var expires = new Date();
expires.setHours(expires.getHours() + 6);
user.emailResetToken = hash;
user.emailExpires = expires;
Итак, после регистрации у меня есть следующие значения: -
{
"isVerified": false,
"_id": "5c3db78774d8ad1124e6056f",
"fullName": "ABC",
"email": "abc@xyz.com",
"password": "$2a$10$7JBeboru2xORj6d8wyR0W.Ulm/7JQs1dyP7H.Mr4lq8FcSP6KVnBa",
"phoneNumber": "000631",
"emailResetToken": "c4af02d40b31e6882692e75f85dab9198fbdcc2f132ee7a0ab0bd94420e4dd",
"emailExpires": "2019-01-15T16:35:51.457Z",
"saltSecret": "$2a$10$JBeboru2xORj6d8wyR0W.",
"__v": 0
}
Так что теперь я столкнулся с двумя проблемами
Я могу отправить электронное письмо с токеном emailResetToken
по Nodemailer , но не знаю, могу ли я правильно передать токен.
let mailOptions = {
from: '"XYZ?" <xyz@gmail.com>',
to: user.email,
subject: "User verification ✔",
html: 'Click the following link to confirm your account:</p><p><a href="+user.emailResetToken+">Click here to verify</a></p>'
};
При нажатии на ссылку электронной почты я получаю сообщение о перенаправлении: The page you were on is trying to send you to an invalid URL (http://+user.emailResetToken+)
Во-вторых, я не понимаю, как мне сопоставить токен emailResetToken
с базой данных emailResetToken
при нажатии на вышеуказанную ссылку , чтобы isVerified": false
стало true
.