Учебник по части аутентификации приложения в серверной части, созданного с помощью Node.js, Express и TypeScript.

Сегодня я хочу рассказать вам об аутентификационной части приложения в бэкенде, созданного с помощью Node.js, Express и TypeScript. Я использовал PostgreSQL для базы данных и prismaOrm для управления базой данных.

Я пропустил часть установки и перехожу к основной части. Но вам нужно установить любимые пакеты, если вы хотите создать экземпляр своего приложения с помощью TypeScript и Prisma.

typescript, ts-node, express, nodemailer, google-auth-library, @prisma/client, prisma, pg, jsonwebtoken, bcrypt, @types/jsonwebtoken, @types/node, @types/nodemailler @types/express , @typesbcrypy.

После установки пакетов нам нужно запустить Prisma. Более подробную информацию о том, как запустить Prisma, можно найти здесь, на сайте Prisma.

npx prisma && npx prisma init

Теперь сначала создадим наш токен для активации с помощью JWT. Нам нужен токен активации, чтобы проверить информацию пользователя, чтобы завершить регистрацию пользователя. JSON Web Token обрабатывает это вместо нас. Во-первых, нам нужно создать токен с помощью метода sign. Обычно он принимает объект, который включает в себя информацию, которую мы хотим подписать, закрытый ключ для подписи и время истечения срока действия. После создания токена мы проверим этот токен с помощью нашего закрытого ключа с помощью метода проверки JWT. Вам нужно сохранить свой закрытый ключ в файл .env.

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

Прежде чем мы напишем нашу функцию, нам нужно импортировать nodeMailer и OAuth2Client. Мы возьмем наши учетные данные из консоли Google. Сначала заходим в Консоль Google. Затем, если у вас нет приложения, создайте свое первое приложение. » Вы можете увидеть ниже в правой части изображения учетные данные.

Прежде чем перейти к авторизации Google. Пожалуйста, убедитесь, что вы добавили в свое приложение ссылку Google для разработчиков.

Теперь переходим в раздел Разработчики Google.

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



Теперь мы можем закодировать наш обработчик регистров. Прежде всего, нам нужно проверить нашу базу данных, существует ли данный адрес электронной почты или нет. Если выходит, нам нужно вернуть сообщение, если нет, мы можем продолжить. Затем нам нужно получить от пользователя желаемую информацию, такую ​​как имя пользователя, адрес электронной почты и пароль. Нам нужно зашифровать данный пароль, потому что небезопасно сохранять пароли непосредственно в базе данных. Затем нам нужно создать пользователя с данной информацией, чтобы мы могли создать токен активации. С этим токеном активации нам нужно создать URL-адрес, чтобы мы могли отправить запрос на активацию электронной почты.

Затем мы можем проверить данный адрес электронной почты, является ли он действительным или нет. Если он действителен, мы можем вызвать функцию sendMail и указать параметры электронной почты, URL-адреса и сообщения.

Для активации нам нужен active_token из req.body. Затем нам нужно проверить этот active_token с вашим личным активным токеном в файле .env, используя метод проверки JWT. Во время проверки мы создаем новый объект типа decoded, чтобы мы могли вытащить пользователя из этого объекта. Затем мы можем сохранить пользователя, используя метод создания prismaOrm, и отправить пользователю сообщение.

Вы можете изучить коды, подробно описанные по ссылке ниже:



После запроса регистрации обработчик регистрации возвращает токен активации. Вы видите указанный выше URL-адрес в обработчике регистрации (const url = `${CLIENT_URL}/active/${activeToken}`;), когда мы отправим запрос на API/active/token_active, мы активируем электронное письмо.

Вы можете вызвать часть аутентификации по ссылке GitHub ниже:



Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.