[英]bcrypt.compare always returns false
我正在嘗試登錄 function 但是當我嘗試將密碼與散列密碼進行比較時,它總是返回 false
這是我的 registerUser function 保存散列
const registerUser = async (request, response) => {
const hashedPassword = await bcrypt.hash(request.body.password, 12)
const user = new UserModel({
username: request.body.username,
password: hashedPassword
});
try {
const databaseResponse = await user.save();
response.status(201).send(databaseResponse);
} catch (error) {
response.status(500).send({message: error.message});
}
};
這是保存比較的登錄 function
const login = async (request, response) => {
try{
const user = await UserModel.findOne({username: request.body.username})
if(!user) return response.status(403).send('no user with name ' + request.body.username + ' found');
const isPassValidated = await bcrypt.compare(request.body.password, user.password)
if(!isPassValidated) return response.status(403).send('wrong password');
response.status(200).send('yay');
} catch(error){
response.status(500).send({message: error.message});
}
}
當我 console.log request.body.password 和 user.password 哈希字符串等於未哈希字符串,所以它應該返回 true
哈希字符串與保存在數據庫中的字符串相同
剛剛發現問題,謝謝大家幫忙。 在 userSchema 中,密碼是小寫:true 導致問題...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.