繁体   English   中英

在node.js上使用bcrypt登录问题

[英]Login Issues using bcrypt on node.js

伙计们,在使用node.js上的bcrypt检索uname pwd登录时遇到问题...我是菜鸟,你知道,对不起,如果这个问题不聪明......代码如下......我没有收到任何错误,无论是输入错误的密码还是正确的密码,代码都会返回“res.status(200).send”(成功输入“+ username”....

app.post("/users/signin", function(req, res){
var {username, password} = req.body; //deconstructing again!!! 
    User.findOne({username: username}, "username password", function(err, userBody){
        if (!err){
            var pwdcheck = bcrypt.compare(userBody.password, password); //decrypt password
            console.log("password check: inserted pwd is " + userBody.password + " retreived is " + password);
            if (pwdcheck) {
                console.log("pwdcheck returns " + pwdcheck);
                req.session.user = {
                   username: userBody.username,
                   password: userBody.password
                };
                req.session.user.expires = new Date( //giving a session duration for the user
                    Date.now() + 24 * 3600 * 60 * 1000
               );
               res.status(200).send(" successfully logeed in " +username );        
           } else {
           res.status(401).send(" invalid credentials 1 " +username );
           }
    } else {
        res.status(401).send(" invalid credentials 2 " +username );
        }
});

});

看起来像bcrypt.compare是一个异步函数。 分配变量时,不是指定函数的返回值,而是指定函数本身。 由于函数不为null ,因此用于测试返回值的if语句将始终求值为true 请尝试使用bcrypt.compareSync

此外,您可能会反转明文和散列密码。 来自请求的明文密码应该是第一个参数,来自存储的用户记录的散列密码应该是第二个: bcrypt.compareSync(plaintext, hash)

https://www.npmjs.com/package/bcrypt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM