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

Check e-mail and password hash from an array

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

["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
  })
})