bcrypt.js icon indicating copy to clipboard operation
bcrypt.js copied to clipboard

Bcrypt compare always return false

Open farzaadweb opened this issue 1 year ago • 5 comments

const messageController = require('@service').message; const { v4: uuidv4 } = require('uuid'); const _User = require('@model').User; const bcrypt = require('bcryptjs');

class User { async register(req, res) { let { email, firstName, lastName, password, age } = req.body if (!email || !firstName || !lastName || !password || !age) { return res.status(400).send(messageController(400)) }; let checkUser = await _User.findOne({ where: { email } }) if (checkUser) return res.status(409).send(messageController(409)); let hashedPassword = await bcrypt.hash(password, 12); try { let createUser = await _User.create({ id: uuidv4(), email, firstName, lastName, password: hashedPassword, age }) if (createUser) return res.status(201).send(messageController(201)); return res.status(422).send(messageController(422)); } catch (error) { return res.status(500).send(messageController(500)); } }

async login(req, res) { let { email, password } = req.body if (!email || !password) { return res.status(400).send(messageController(400)) }; let findUser = await _User.findOne({ where: { email } }); if (!findUser) return res.status(404).send(messageController(404, 'User Not Found', 'کاربری با این مشخصات یافت نشد')); let hashedPasswordCheck = await bcrypt.compare(password, findUser.dataValues.password) console.log(hashedPasswordCheck); if (!hashedPasswordCheck) return res.status(401).send(messageController(401)); console.log("after", hashedPasswordCheck); } }

module.exports = User;


It always returns me as false but the code is true

farzaadweb avatar Mar 28 '23 06:03 farzaadweb

const messageController = require('@service').message; const { v4: uuidv4 } = require('uuid'); const _User = require('@model').User; const bcrypt = require('bcryptjs');

class User { async register(req, res) { let { email, firstName, lastName, password, age } = req.body if (!email || !firstName || !lastName || !password || !age) { return res.status(400).send(messageController(400)) }; let checkUser = await _User.findOne({ where: { email } }) if (checkUser) return res.status(409).send(messageController(409)); let hashedPassword = await bcrypt.hash(password, 12); try { let createUser = await _User.create({ id: uuidv4(), email, firstName, lastName, password: hashedPassword, age }) if (createUser) return res.status(201).send(messageController(201)); return res.status(422).send(messageController(422)); } catch (error) { return res.status(500).send(messageController(500)); } }

async login(req, res) { let { email, password } = req.body if (!email || !password) { return res.status(400).send(messageController(400)) }; let findUser = await _User.findOne({ where: { email } }); if (!findUser) return res.status(404).send(messageController(404, 'User Not Found', 'کاربری با این مشخصات یافت نشد')); let hashedPasswordCheck = await bcrypt.compare(password, findUser.dataValues.password) console.log(hashedPasswordCheck); if (!hashedPasswordCheck) return res.status(401).send(messageController(401)); console.log("after", hashedPasswordCheck); } }

module.exports = User;

It always returns me as false but the code is true

It does not make sense I know but remove await and it should work let hashedPasswordCheck = bcrypt.compare(password, findUser.dataValues.password) Though signature of compare is function compare(s: string, hash: string): Promise<boolean>, I hope someone can explain why these last days it fails with await, while in the past it worked well.

AbdourahamaneIssakaSani avatar Jun 23 '23 08:06 AbdourahamaneIssakaSani

DO NOT REMOVE AWAIT. IF you do this, it will return a promise which will always be true. Any password will work in that situation.

THPubs avatar Mar 26 '24 09:03 THPubs

Thank you for your time. The issue stemmed from the version I had installed. A previous version was functioning properly, and it's possible that they have since updated and rectified the problem.

farzaadweb avatar Mar 26 '24 10:03 farzaadweb

I have that issue ultimately. I dont know why. Because the issue ocurrs suddenly without any explanation meanwhile I was developing my software. In the begging works well, but I don´t know why stop working

molinaangeldavid avatar Jun 20 '24 17:06 molinaangeldavid

Also on my code compare() returns always true and compareSync() returns always false. In my previous applications it was working fine and now its not functioning..

shyam-stha avatar Jul 24 '24 17:07 shyam-stha