检查数组中的电子邮件和密码哈希



暗示我有一个包含电子邮件和密码组合的数组,即:

["john@doe.com", "johnspasswordhashhere", "janet@doe.com", "janetpasswordhashhere", "tim@doe.com", "timspasswordhashhere" ]

如何比较提供的电子邮件和密码哈希是否匹配?我需要用bcrypt.compare(passtotestvar, passhash)来比较。

您可以先对用户和密码进行排序,然后遍历每个用户以检查凭据

const arr = ["john@doe.com", "johnspasswordhashhere", "janet@doe.com", "janetpasswordhashhere", "tim@doe.com", "timspasswordhashhere"]
const sorted = arr.reduce((a, e, i) => (i % 2 || a.push([]), a[a.length - 1].push(e), a), [])
console.log(sorted)

然后你可以使用bcrypt的比较功能,它为你完成所有的工作:

// from DB
const users = {
'john@doe.com': 'HASHEDPW',
'janet@doe.com': 'HASHEDPW',
'tim@doe.com': 'HASHEDPW'
}

sorted.forEach(([email, password]) => {
bcrypt.compare(password, users[email]).then((e, r) => {
// r = true if hash = hashed pw
})
})

最新更新