gpt4 book ai didi

node.js - bcrypt.compare 与 Promise 总是返回 false

转载 作者:太空宇宙 更新时间:2023-11-03 22:21:53 28 4
gpt4 key购买 nike

我是 Express.js 和 Passport.js 的新手,所以可能我做错了什么,因为 bcrypt comapre 函数总是返回 false。

public static findUser = async ({ email, password }) => {
const pool = await new sql.ConnectionPool(CommonConstants.connectionString).connect();
const request = pool.request();
const result = await request
.input("Email", sql.NVarChar, email)
.execute("FindUserSP");
const user = result.recordset;
return await bcrypt.compare(password, user[0].Password) ? user : {};
};

这就是哈希值的创建方式:

const password = req.body.Password;
const email = req.body.Email;
const salt = await bcrypt.genSalt(10);
const hash = await bcrypt.hash(password, salt);

测试用例:

Hash: $2b$10$nK1.wW71NcBIQkMQq6wpHe/HMhCjOaQNy9BpfPDef01
password: 123
version: 3.0.2

最佳答案

检查数据库是否没有截断数据。哈希值通常应为 60 个字符,而不是 50 个字符:

const salt = await bcrypt.genSalt(10);
const hash = await bcrypt.hash(password, salt);

测试: https://repl.it/@CodyGeisler/bcrypt-test?language=nodejs

关于node.js - bcrypt.compare 与 Promise 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53598775/

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