Практически каждое значимое приложение нуждается в системе аутентификации. Любая общая система аутентификации имеет 4 страницы на интерфейсе пользователя. Страница входа, страница регистрации, страница забытого пароля и страница редактирования пароля и одна ссылка для выхода. Используя стек MERN, эти страницы создаются при реагировании, в то время как серверные API пишутся в экспресс-приложении на серверной части.

При внедрении системы аутентификации казалось довольно громоздким писать мою полную реализацию с нуля для бэкэнда. К счастью, у нас есть библиотека passport.js , которая нам в этом поможет. Теперь Passport.js помогает с помощниками по базовой аутентификации и поддерживает разделение задач для нашей системы аутентификации. Мы можем добавить в наше приложение множество стратегий аутентификации с помощью паспорта. В этом руководстве мы рассмотрим локальную стратегию (могут быть рассмотрены дополнительные стратегии, такие как аутентификация с использованием Google или Facebook, на основе ответов для этого руководства).

Теперь, согласно документации на его официальной странице github, нам нужно сначала установить библиотеку на нашем сервере. Для этого урока нам нужно будет установить библиотеки bodyparser, cors, mongroose, bcrypt, jwt, nodemailer и crypto.

Для настройки мангуста (mongo DB). "Перейдите по этой ссылке"

npm install passport

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

(Весь приведенный ниже код написан в предположении, что интерфейс обрабатывается какой-либо структурой внешнего интерфейса, например, react)

Я следую очень строгой структуре каталогов для приложений MVC, поэтому в папке backend у меня есть отдельные папки для моих контроллеров, то есть / backend / controllers /. Для маршрутов / backend / routes /. Для config / backend / config /. Для моделей / бэкэнда / моделей / и т. Д.

Я создал единую суть со всеми файлами и вставил то же самое ниже.

Итак, основной поток выглядит примерно так.

ШАГ 1. Зарегистрируйтесь в API
Предполагая, что интерфейс работает на react js. Пользователь заходит на страницу регистрации, и при заполнении формы на бэкэнд отправляется запрос на создание пользователя. Маршрут ниже для того же: / user / signup. Теперь тело состоит из электронной почты и пароля (может быть зашифрован при отправке из внешнего интерфейса - не рассматривается в этом руководстве). Используя соединение мангуста, мы проверяем, существует ли пользователь в нашей БД. Если да, то мы отправляем ответ, что пользователь уже существует. Однако, если пользователь не существует, мы создаем зашифрованный пароль для пользователя и сохраняем его в базе данных.

ШАГ 2: API входа в систему
Теперь мы создали пользователя, и пользователь может войти в систему на странице входа в веб-интерфейс. Маршрут ниже для того же: / user / login. Теперь, используя локальную стратегию, мы должны войти в систему. В паспорте есть несколько дополнительных опций, которые можно настроить в файле конфигурации. Файл может быть добавлен с новыми стратегиями к реализации. То же самое можно найти в файле config / паспорт.js ниже. В методе контроллера для входа ниже мы аутентифицируемся с использованием локальной стратегии для паспорта после проверки электронной почты и пароля. После аутентификации пользователя мы генерируем токен jwt для того же и отправляем его во внешний интерфейс, который можно сохранить на интерфейсе и отправлено в заголовках запросов, отправленных после.

ШАГ 3: Забыли пароль API
Теперь, если пользователь забыл свой пароль. На веб-интерфейсе он / она должен добавить свой адрес электронной почты, чтобы мы могли отправить электронное письмо. Мы отправляем пользователю электронное письмо на адрес электронной почты с токеном, срок действия которого истекает через час. Это может быть обработано на внешнем интерфейсе по определенному маршруту, а токен должен обрабатываться на внутреннем интерфейсе.

ШАГ 4: API редактирования пароля
Когда пользователь щелкает ссылку в электронном письме для нового пароля в своем почтовом ящике, он должен быть перенаправлен на страницу редактирования пароля с формой с двумя полями для пароля и подтверждения пароля. При заполнении этой формы запрос должен быть отправлен в API / users / change_password. Теперь вам нужно будет добавить логику, чтобы проверить, истек ли срок действия токена. Это самостоятельное упражнение, которое читатели должны выполнить. Но как только пользователь успешно создаст новый пароль, он должен быть перенаправлен на страницу входа в систему.

ШАГ 5: Выход
Удалите все сеансы или сохраненные токены во внешнем интерфейсе. Если вы сохраните токены JWT на сервере. Также бэкэнд-токен можно удалить из базы данных, если вы захотите его сохранить (сохранение токена в бэкэнде не рекомендуется).

Код может показаться громоздким, но после реализации аутентификация имеет большое значение для любого приложения.

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

P.S В случае, если я пропущу что-то, в чем я почти уверен, пожалуйста, дайте мне знать в ответах ниже. Я при реализации того же не смог найти много ресурсов для того же самого. Так что, если какая-то логика не в соответствии с вами, обязательно дайте мне знать. Постараюсь решить то же самое.