javascript - 验证来自 nodejs 的电子邮件
问题描述
我是后端新手,当用户发布时有一个任务来验证注册电子邮件地址/register
所以在user.controller.js文件中,我使用哈希将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
解决方案
推荐阅读
- python - 有条件地编辑时间日期索引,检查数据框中的先前记录
- android - RxJava toMultiMap 不适用于房间数据库查询
- python - 取 NavigatableList 的第二个元素
- c# - 制作一个 FiveM 启动器
- c++ - 如何将数组从一个类发送到另一个类
- scala - scala compile error :当 Jersey 客户端注册时匹配参数类型
- python - 在 Windows 上使用邮递员在 centos6 上点击 django API
- react-native - 使用 React Native 通过 Twilio 发送短信 (SMS)?
- android - 从android中的应用程序启动拨号器会出错
- continuous-integration - 如何使用 sftp 和密钥从 bitbucket 管道部署?