3.6 KiB
3.6 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
58a25bcff9fc0f352b528e7e | Hash and Compare Passwords Synchronously | 2 | Синхронизировать и синхронизировать пароли |
Description
var hash = bcrypt.hashSync(myPlaintextPassword, saltRounds);
Добавьте этот метод хэширования к вашему коду, а затем запишите результат на консоль. Опять же, используемые переменные уже определены на сервере, поэтому вам не нужно их корректировать. Вы можете заметить, что даже если вы используете тот же пароль, что и в асинхронной функции, результат в консоли отличается - это связано с тем, что соль произвольно генерируется каждый раз, как видно из первых 22 символов в третьей строке хэша , Теперь, чтобы сравнить ввод пароля с новым хэшем синхронизации, вы должны использовать метод compareSync:
var result = bcrypt.compareSync(myPlaintextPassword, hash);
с результатом будет логическое значение true или false. Добавьте эту функцию и войдите в консоль в результате, чтобы увидеть ее работу. Представьте свою страницу, когда вы думаете, что у вас все в порядке. Если вы столкнулись с ошибками во время этих проблем , вы посмотрите на пример завершенного код можно здесь . Instructions
Tests
tests:
- text: Синхронизированный хэш генерируется и правильно сравнивается
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /START_SYNC[^]*hash.*=.*bcrypt.hashSync.*myPlaintextPassword( |),( |)saltRounds[^]*END_SYNC/gi, "You should call bcrypt.hashSync on myPlaintextPassword with saltRounds"); assert.match(data, /START_SYNC[^]*result.*=.*bcrypt.compareSync.*myPlaintextPassword( |),( |)hash[^]*END_SYNC/gi, "You should call bcrypt.compareSync on myPlaintextPassword with the hash generated in the last line"); }, xhr => { throw new Error(xhr.statusText); })'
Challenge Seed
Solution
// solution required