gpt4 book ai didi

node.js - Node 应用程序因空字符串作为密码而崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:11 25 4
gpt4 key购买 nike

如果用户名或密码不正确,应用程序可以正常工作。

但是如果输入的用户名正确并且没有输入密码,则会崩溃。

This is the Error I'm getting before the app crashes:
Error: Illegal arguments: undefined, string at _async

用户.js

module.exports.comparePassword = function(candidatePassword, hash, callback){
bcrypt.compare(candidatePassword, hash, (err, isMatch) =>{
if(err) throw err;
callback(null, isMatch);
});

}

用户.js:

router.post('/authenticate/user', (req, res, next) =>{
const username = req.body.username;
const password = req.body.password;
User.getUserByUsername(username, (err, user) => {
if(err) throw err;
if(!user){
return res.json({success: false, msg: 'User Not Registered'});
}
User.comparePassword(password, user.password, (err, isMatch) => {
if(err) throw err;

if(isMatch){
const token = jwt.sign({data: user}, config.secret, {
expiresIn : '6h'
});

res.json({
success: true,
token: 'JWT ' +token,
user:{
id: user._id,
username : user.username
}
});
} else {
return res.json({success: false, msg: 'Wrong Password'});
}
});
});
});

我是否应该在应用程序的前端添加验证以进行快速修复,或者这不是一个好主意?提前致谢。

最佳答案

简单的修复方法是在与哈希值进行比较之前检查“candidatePassword”,如果它为空,则会抛出错误。

关于node.js - Node 应用程序因空字符串作为密码而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com