#javascript #node.js #mongodb #authentication #bcrypt
#javascript #node.js #mongodb #аутентификация #bcrypt
Вопрос:
Каждый раз, когда я пытаюсь войти в систему, сравнение bcrypt возвращает false, но регистрация работает.
Вот код для входа в систему :
async function init(passport){
const authenticateUser = async (email,password,done) => {
const user = await User.findOne({email : email})
if(user === null) return done(null,false,{message : "Email and Password do not match"});
try{
const isPasswordMatch = await bcrypt.compare(password,user.password);
console.log(isPasswordMatch);
if(isPasswordMatch) return console.log("Up and running");
done(null,false,{message : "Password"});
}
catch(error){done(error)}
}
}
module.exports = init;
Обратите внимание, что я использую библиотеку passportjs и исключил для нее код, но у меня была эта проблема до того, как я ее добавил
Комментарии:
1. Если вы войдете в базу данных и запустите findOne, найдете ли вы учетные данные, и они того же типа? Кроме того, если по какой-то причине электронное письмо не уникально, возможно, вы получаете другого пользователя. Проверьте это.
2. Хорошая идея, но я только что проверил, и все было хорошо, единственная проблема заключалась в том, что когда я использовал хэшированную строку, чтобы найти пользователя, он не смог ее найти
3. хм … не могу с этим помочь, не знаю, что такое хэшированный str
Ответ №1:
Вы хэшировали пароль, когда пользователь сохранялся при регистрации? Вы можете проверить, является ли пароль открытым текстом.