Подтвердите электронную почту от nodejs - PullRequest
0 голосов
/ 15 января 2019

Я новичок в бэкэнде и получил задачу проверить адрес электронной почты при регистрации пользователя 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.

...