Если вы используете Node и Express для создания своего приложения, существует несколько отличных библиотек, которые помогут защитить пользовательские данные за несколько простых шагов. Здесь я проведу вас через очень простой процесс, который позволит зашифровать пароли пользователей и сохранить файлы cookie в вашем приложении.

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

Оттуда будет просто сгенерировать хеш для пароля вашего пользователя и другой информации, которую вы хотите защитить. В приведенном ниже примере кода для этого я использую bcrypt.hash ().

Использование метода .hash совсем несложно. Первый аргумент - это термин, который вы хотите хэшировать, а четвертый аргумент - это функция (которая следует типичному шаблону обратного вызова в стиле узла). На странице подписки моего приложения я просто добавляю новое имя пользователя и пароль в свою базу данных SQLite и перенаправляю пользователя на домашнюю страницу моего веб-сайта.

Сравнивать входные данные с хешированным паролем в базе данных тоже очень просто. Ниже я использую bcrypt.compare, чтобы определить, ввел ли пользователь правильный пароль для данной учетной записи.

bcrypt.compare принимает три аргумента: первый - это термин, который вы хотите проверить, второй - это хешированный термин, с которым вы его сравниваете, а третий аргумент - это еще одна анонимная функция в стиле узла. Выше я начинаю с проверки того, хранится ли уже имя пользователя в базе данных (я использую метод .fetch () из Bookshelf.js, который, на мой взгляд, является лучшим ORM JavaScript-SQL), а затем проверяю, действительно ли или пользователь ввел правильный пароль, связанный с этим именем пользователя.

Если вы хотите убедиться, что пользователь прошел аутентификацию до того, как какое-либо из ваших экспресс-представлений отправит какие-либо запросы на получение / публикацию, вы можете легко создать сеанс, потребовав экспресс-сеанс в своем сценарии и используя app.use (session ({}). Затем вы можете использовать приведенный ниже шаблон для всех типов запросов, требующих аутентификации.

В этом примере я хочу, чтобы пользователь имел доступ к индексу, только если сеанс все еще активен. В противном случае отправьте их обратно на экран входа в систему. Не забывайте начинать сеанс, когда пользователь входит в систему с правильным именем пользователя и паролем! Кроме того, рекомендуется добавить к объекту сеанса пару «ключ-значение» «секрет: значение», чтобы повысить безопасность вашего приложения.