Проблема в bcrypt и async - PullRequest
       11

Проблема в bcrypt и async

0 голосов
/ 01 ноября 2019

Я пытаюсь написать форму для создания пользователя. В моей лямбда-функции. Я хочу попробовать, если bcrypt работает или нет, поэтому я добавляю что-то вроде этого:

...
const bcrypt = require('bcryptjs')
...
exports.handler = async (event, error, callback) => {
  const email = event.email ? event.email : ''
  const username = event.username ? event.username : ''
  const password = event.password ? event.password : '' // in this example,I use '123123' as a test password
  const timestamp = new Date().getTime().toString()
  ...
  const saltRounds = 10
  const passwordhash = await bcrypt.hashSync(password, saltRounds)
  console.log('passwordhash' , passwordhash)
  const compareResult = await bcrypt.compareSync(passwordhash , password)
  console.log('compateresult' ,compareResult )

Но я не знаю, почему в CompareResult. Это всегда возвращает ложь. Я прочитал некоторые другие вопросы, которые также имеют ту же проблему, и он сказал, что я должен использовать await и позволить ему работать. Однако я все еще не могу это исправить. Кто-нибудь может объяснить, как работают bcrypt.hashSync и bcrypt.compareSync?

1 Ответ

2 голосов
/ 01 ноября 2019

На основании документации пароль является первым параметром для compareSync. Это работает так, как ожидается, если я изменю порядок параметров в вашем коде.

const compareResult = await bcrypt.compareSync(password, passwordhash)

Также вы можете удалить await, оба compareSync и hashSync являются синхронными методами.

...