bcrypt.comare总是返回false

问题描述

我有一个使用express,mongodb-mongoose,passport,bcrypt等的node.js应用程序。我已经在mongodb地图集上建立了2个数据库一个是本地数据库,另一个是。在我的本地数据库中,我可以注册登录,但是当我在地图集上尝试时,即使我已经注册,我也永远无法登录

(路由)admin.js

adminRouter.post('/register',async (req,res)=>{
    const user = new User({
        username:req.body.username,password:bcrypt.hashSync(req.body.password,10)
    })

    try{
        const savedUser = await user.save();
        res.json(savedUser);
    }catch(err){
        console.log(err);
    }
    
})

passport.js

module.exports = function(passport){
    passport.use(new localStrategy({usernameField:'username'},(username,password,next)=>{
        User.findOne({username:username}).then(user=>{
            if(!user){
                return next(null,false,{message:'The username does not exist'});
            }
            console.log('incorrect password' + password +'user.password'+ user.password);
            bcrypt.compare(password,user.password,(err,isMatch)=>{
                console.log('incorrect password' + password +'user.password'+ user.password)
                if(err) throw err;
                if(isMatch){
                    return next(null,user)
                }else{
                    console.log('incorrect password' + password +'user.password'+ user.password)
                    return next(null,{message:'password incorrect'})
                }
            });
        })
        .catch(err=>console.log(err));
    }))
    passport.serializeUser(function(user,next){
        next(null,user.id);
    });
    
    passport.deserializeUser(function(id,next){
        User.findById(id,function(err,user){
            next(err,user);
        });
    });
}

在控制台中正在记录它:

incorrect password<password>user.password<password>
incorrect password<password>user.password<password>
incorrect password<password>user.password<password>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)