使用Node.js进行电子邮件验证

时间:2018-07-14 08:18:34

标签: node.js mongodb email verification

每当用户注册时,我都会向他发送一封电子邮件,其中包含用户需要单击以进行验证的链接。我在该链接中传递令牌。当用户单击链接时,他应该得到验证,但我无法执行此操作。我只能从链接中检索令牌,但无法在数据库中找到用户并更新值。

这是我的代码:

html, body
{
height: 100%;
}

body
{
margin: 0;
padding: 0;
background:url('semi_buffet.jpg');
background-repeat: no-repeat;
background-position:center center ;
background-size: cover;
font-family:"Times New Roman", Times, serif;
}

2 个答案:

答案 0 :(得分:1)

尝试使用Promise代替分配。

User.findOne({ 'secretToken': verifyToken })
.then(user => {
  // do something with user
})
.catch(err => {
  // do something with error
 })

答案 1 :(得分:0)

如果您使用JWT验证路线,则可以:

1-使用一个“哈希值”(令牌)生成链接验证,并将此令牌保存在用户文档(用户集合)中。

<string>My NS APP</string>

2-禁用此路由的安全性:

send the link e.g. "https://site/user/verify?token=3f0621f7e4c41ece51926a40cee4dae0be65ct7"

3-收到验证用户的请求:

app.use(jwt({secret: process.env.SECRET}).unless({path: ['/users/verify']})); 

4-查找并更新用户(已验证):

router.put('/verify', bodyParser.json(), function (req, res, next) {
  try {
    const user = userController.verify(req.query.token);
    res.status(200).json(user);
  } catch (err) {
    next(err);
  }
});

如果您需要等待更新以执行其他sttuf,则可以使用async / wait:Async/Await Tutorial