使用bcrypt的简单Auth中间件不适用于邮递员

时间:2017-04-06 09:53:05

标签: node.js

我在后端很新,这是我第一次使用带有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');

}

谢谢你的帮助。

0 个答案:

没有答案