Безопасность вашей базы данных - один из наиболее важных факторов, которые следует учитывать при создании нового проекта.

Есть несколько способов реализовать надежную систему аутентификации.
В этой статье я покажу вам, как создать его с помощью JWT, полностью с нуля и без использования сторонних сервисов.

Какие технологии мы будем использовать?

  • NodeJS: инструмент для выполнения кода JavaScript на стороне сервера.
  • Экспресс: микросхема для ускорения разработки серверов.
  • Mongoose: библиотека, которая помогает нам подключиться к нашему экземпляру MongoDB.
  • JWT (веб-токен JSON): зашифрованная строка, которая генерируется сервером и сохраняется клиентом. При каждом запросе эта строка будет отправляться клиентом и проверяться сервером.
  • Bcrypt: библиотека, которую мы будем использовать для хеширования наших паролей.
  • BodyParser: поможет нам получить параметры тела при обработке запроса.

Настройте нашу среду

Прежде всего, убедитесь, что у вас установлен NodeJS. Если нет, загляните по этой ссылке. Затем создайте новый экземпляр MongoDB. Вы можете создать его здесь бесплатно.
Наконец, установите пакеты NPM в папку нашего проекта через командную строку.

npm install express jsonwebtoken body-parser bcryptjs

Готовы кодировать!

Теперь нам нужно создать наши серверные скрипты:

  • app.js, в котором мы будем обрабатывать все запросы к нашему серверу.
  • db.js, который будет содержать наши модели базы данных.

Давайте создадим очень простое приложение Express: оно будет базовой структурой нашего приложения.

«SECRET_JWT_CODE» - это ключ шифрования, который мы собираемся использовать при генерации наших токенов.

Прежде чем приступить к реализации наших конечных точек, мы должны взглянуть на файл db.js.

Этот файл, по сути, создает схемы нашей модели БД. Это означает, что данные, относящиеся к каждому пользователю, будут сохранены в документе (коллекции) под названием «пользователи» и будут иметь два атрибута: «электронная почта» и «пароль». Конечно, вы можете создать столько моделей, сколько захотите, с любым атрибутами, сколько захотите.

Теперь нам нужно реализовать нашу систему маршрутизации. Приложение будет иметь две конечные точки: первая для регистрации, а вторая для входа.

Оно работает!

Заключительные шаги

Мы успешно внедрили нашу систему аутентификации. Теперь клиент должен сохранять токен после входа в систему и отправлять его обратно каждый раз, когда он делает новый запрос.

Помните, что у Json Web Tokens есть срок действия. Есть много способов, чтобы пользователь оставался авторизованным. Например, всякий раз, когда это происходит, клиент может обновить токен, совершив новый вызов входа.

На серверной стороне вот как вы можете проверить, действителен ли токен:

Вы можете найти содержание Github здесь! 😊