我在后端很新,这是我第一次使用带有nodejs的中间件。到目前为止,我的注册功能和格式密码在postman上运行,因为当我注册一个新用户时,我在我的数据库中找到一个哈希密码。
但是,当我想使用同一个用户登录时,我会收到我的消息(密码或邮件错误)。 我的console.log(用户)在节点上正确读取用户profil,但之后,似乎bcrypt.compareSync不起作用。 id我的console.log(令牌),什么都不返回。
我的generateToken函数或登录函数肯定有问题,但我无法理解。
你可以看到我的代码。
login (req,res){
Users.find({mail:req.body.mail})
.then(users =>{
console.log(users);
if(users.length > 0 && bcrypt.compareSync(req.body.mail+req.body.password, users[0].password)){
const token= generateToken(users[0]);
console.log(token);
res.status(200).send('operation succeed: \n' + token);
//res.statut(200).redirect('/logged');
}
else{
res.status(500).send('wrong password or mail');
}
})
.catch(err =>{
res.send(err);
});
},
}
我的generateToken函数:
function generateToken(user){
const payload={
iat:moment().unix(),
exp:moment().add(14,'days').unix(),
iss:user.mail,
sub:user.password
}
return jsonwebtoken.sign(payload,'app_secret');
}
谢谢你的帮助。