问题描述
我正在构建用户身份验证系统,一切正常,我可以注册并将数据发送到我的 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 (将#修改为@)