每当用户注册时,我都会向他发送一封电子邮件,其中包含用户需要单击以进行验证的链接。我在该链接中传递令牌。当用户单击链接时,他应该得到验证,但我无法执行此操作。我只能从链接中检索令牌,但无法在数据库中找到用户并更新值。
这是我的代码:
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;
}
答案 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