Bcrypt 给出内部错误并散列密码错误?

问题描述 投票:0回答:1

我正在使用 bcrypt 来散列我的数据库密码!但最近我看到我的比较方法起作用了。我在网上搜索解决方案并在意识到它们不起作用后缩小了范围!

我在这里访问了这个 bcrypt 生成器:https://www.devglan.com/online-tools/bcrypt-hash-generator

然后我将我的密码粘贴到我选择的正确轮数中,并获得了我的在线哈希密码,但它在我的 bcyript 比较方法中并且有效。我这样做了 3 次,以确保它不仅仅是侥幸,每次它都有效,但是当我使用我的常规数据库哈希密码时,它总是返回 false!我如何使 bcyrpt 正确散列密码帮助!

我的代码: usershema:

UserShema.pre('save',async function(next){

    const salt = await bcrypt.genSalt()
    this.password = await bcrypt.hash(this.password,5)

    next()
})

UserShema.pre("save", function (next) {
    let user = this;
    user.password = user.password.replace(/ /g, "");
    next();
})

我的路线:

module.exports.login = async (req,res,next)=>{
    try {
        
        const username = req.body.username
        const password = req.body.password

        const user = await User.findOne({username})
        let tempuser = 1

        if(user){
            const auth = await bcrypt.compare(password, user.password)
            console.log(auth)
            if (auth) {
                    tempuser = user;
                    const jwt = createJwt(tempuser._id)
                    return res.json({
                    message: 'sussecess',
                    person: tempuser,
                    jwt: jwt
                })
              }else{
                return res.json({
                    status: 'fail',
                    cause: 'All',
                    message: 'user not there signup with you data please!'
                })
              }
        }else{
            next(error)
        }

        console.log('bro')
        console.log(user)

    } catch (error) {
        next(error)
    }
}
javascript node.js mongoose passwords bcrypt
1个回答
0
投票

您好,答案是我使用的是 bycrpt。它是一个需要特定节点版本才能工作的包,一些节点版本会产生错误,所以答案是切换到 bcyrptjs,因为它适用于更多节点版本。

© www.soinside.com 2019 - 2024. All rights reserved.