最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Bcrypt密码比较结果中未定义的NodeJS错误

运维笔记admin9浏览0评论

Bcrypt密码比较结果中未定义的NodeJS错误

Bcrypt密码比较结果中未定义的NodeJS错误

我设置了护照尝试与保存的密码比较用户密码出现错误,简单的登录

module.exports = function (passport) {
    passport.use(new LocalStrategy(function (username, password, done) {
        let query = { email: username };

        User.find(query, function (err, user) {

            if (err) { 
                console.log(err); 
            }
            else {
                if (!user) {
                    console.log(3)
                    return done(null, false, { message: 'No user found' })
                } else {
                    bcryptpare(password, user.password, function (err, isMatch) {
                        if (err) {
                            console.log(err);
                        } else {
                            console.log(user.password)

                            if (isMatch) {
                                console.log(5)
                                return done(null, user);
                            } else {
                                console.log(6)
                                return done(null, false, { message: 'Wrong Password' })
                            }
                        }
                    })
                }
            }

        })
    }));

当我console.log(user)

[ { _id: 5c5995448a88110c35673bb7,
    firstname: 'test',
    lastname: 'sample',
    email: '[email protected]',
    password:
     '$2b$10$bDVGjce/aDxr/NzXFw.qO.DA4tKjY6EwMARgl/NZfb0FNTaTxYwCW',
    __v: 0 } ]

但使用bcrypt,user.password结果undefined尝试与形式的password进入比较保存的密码,但是,看似密码已从查询结果,在console.log(user)结果显而易见的好评。

回答如下:

由于MongoDB是返回“用户”与您可以单个项目的阵列:

module.exports = function (passport) {
passport.use(new LocalStrategy(function (username, password, done) {
    let query = { email: username };

    User.find(query, function (err, user) {

        if (err) { 
            console.log(err); 
        }
        else {
            if (!user) {
                console.log(3)
                return done(null, false, { message: 'No user found' })
            } else {
                bcryptpare(password, user[0].password, function (err, isMatch) {
                    if (err) {
                        console.log(err);
                    } else {
                        console.log(user[0].password)

                        if (isMatch) {
                            console.log(5)
                            return done(null, user);
                        } else {
                            console.log(6)
                            return done(null, false, { message: 'Wrong Password' })
                        }
                    }
                })
            }
        }

    })
}));

或者你可以

module.exports = function (passport) {
passport.use(new LocalStrategy(function (username, password, done) {
let query = { email: username };

User.find(query, function (err, user) {

    if (err) { 
        console.log(err); 
    }
    else {
        if (!user) {
            console.log(3)
            return done(null, false, { message: 'No user found' })
        } else {
            let userdata = user[0];
            bcryptpare(password, userdata.password, function (err, isMatch) {
                if (err) {
                    console.log(err);
                } else {
                    console.log(userdata.password)

                    if (isMatch) {
                        console.log(5)
                        return done(null, user);
                    } else {
                        console.log(6)
                        return done(null, false, { message: 'Wrong Password' })
                    }
                }
            })
        }
    }

})
}));
发布评论

评论列表(0)

  1. 暂无评论