微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复“错误:需要数据和哈希参数”

如何解决如何修复“错误:需要数据和哈希参数”

我正在构建用户身份验证系统,一切正常,我可以注册并将数据发送到我的 mongodb 数据库,但是当我点击登录时 它给了我这个错误

错误:需要数据和散列参数 在 Object.compare (C:\Users\curti\Desktop\classy\node_modules\bcrypt\bcrypt.js:208:17) 在 C:\Users\curti\Desktop\classy\node_modules\bcrypt\promises.js:29:12 在新的承诺 () 在 Object.module.exports.promise (C:\Users\curti\Desktop\classy\node_modules\bcrypt\promises.js:20:12) 在 Object.compare (C:\Users\curti\Desktop\classy\node_modules\bcrypt\bcrypt.js:204:25) 在 Strategy.authenticateUser [as _verify] (C:\Users\curti\Desktop\classy\passport-config.js:12:30) 在 Strategy.authenticate (C:\Users\curti\Desktop\classy\node_modules\passport-local\lib\strategy.js:90:12) 在尝试 (C:\Users\curti\Desktop\classy\node_modules\passport\lib\middleware\authenticate.js:366:16) 在认证 (C:\Users\curti\Desktop\classy\node_modules\passport\lib\middleware\authenticate.js:367:7) 在 Layer.handle [as handle_request] (C:\Users\curti\Desktop\classy\node_modules\express\lib\router\layer.js:95:5) 在下一个 (C:\Users\curti\Desktop\classy\node_modules\express\lib\router\route.js:137:13) 在 checkNotAuthenticated (C:\Users\curti\Desktop\classy\server.js:140:5) 在 Layer.handle [as handle_request] (C:\Users\curti\Desktop\classy\node_modules\express\lib\router\layer.js:95:5) 在下一个 (C:\Users\curti\Desktop\classy\node_modules\express\lib\router\route.js:137:13) 在 Route.dispatch (C:\Users\curti\Desktop\classy\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (C:\Users\curti\Desktop\classy\node_modules\express\lib\router\layer.js:95:5)

这是我验证用户代码

function initialize(passport,getUserByEmail,getUserById){
      const authenticateUser = async (email,password,done) => {
      const user = getUserByEmail(email)
     if(user == null){
        return done(null,false,{message: 'No user with that email'})
       }
   try {
    if(user){
        if (await bcrypt.compare(password,user.password)){
    return done(null,user)
    }else{
        return done(null,{message: 'Password incorrect'})
        }
    }
    
       } catch (e){
           return done(e)
       }
  }
     passport.use(new LocalStrategy({usernameField: "email" },authenticateUser))
    passport.serializeUser((user,done) => done(null,user.id))
    passport.deserializeUser((id,done) => {
     return done(null,getUserById(id))
   })
 }
  module.exports = initialize;

这是我的密码散列代码

           try {
                   const hashedPassword = await bcrypt.hashSync(req.body.password,bcrypt.genSaltSync(10))
                    const errors = validationResult(req)
             if(!errors.isEmpty()) {
              const alert = errors.array()
              return res.render('register.ejs',{alert})

             let users = new Accounts({
                   email: req.body.email,username: req.body.username,password: hashedPassword,}) 
               res.redirect('/login')
                    console.log(users)
                  } catch{
                      console.log("error")
                       res.redirect('/register')
                       }
                   })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。