Часть 4: Разрешение на строительство
Всем привет! Добро пожаловать в четвертую часть нашей серии MERN Stack. Сегодня мы углубимся в создание авторизации для наших приложений. и если вы впервые здесь, вы можете увидеть другие части здесь:
Чтобы начать эту статью, важно сначала понять разницу между аутентификацией и авторизацией. Аутентификация — это процесс проверки личности пользователя, обычно через систему входа в систему. Авторизация, с другой стороны, — это процесс предоставления или отказа в доступе к определенным ресурсам или действиям на основе разрешений аутентифицированного пользователя.
Например, веб-сайт может аутентифицировать пользователя с помощью имени пользователя и пароля, но разрешать ему только доступ к определенным страницам или выполнение определенных действий в зависимости от его роли, например администратора или обычного пользователя. В этой статье мы сосредоточимся на создании системы авторизации для веб-приложения стека MERN с использованием веб-токенов JSON (JWT).
Авторизация
import jwt from "jsonwebtoken" import { createError } from "../utils/createError.js" const verifyToken = (req, res, next) => { const token = req.cookies.accessToken if (!token) return next(createError(401, "You are not authenticated")) jwt.verify(token, process.env.JWT_KEY, (err, payload) => { if (err) return next(createError(403, "Token is not valid!")) req.user_id = payload.id req.isSeller = payload.isSeller req.username = payload.username next() }) } export { verifyToken }
Приведенный выше код определяет функцию промежуточного программного обеспечения, которая проверяет действительность токена доступа, который должен быть включен в файлы cookie запроса.
Функция verifyToken
принимает три параметра: req
, res
и next
. Сначала он извлекает токен доступа из файлов cookie, включенных в запрос, путем доступа к объекту req.cookies
. Если токен отсутствует, он создает ошибку с помощью функции createError
из модуля utils
и передает ее следующей промежуточной функции в цепочке с помощью функции next
.
Если маркер присутствует, функция вызывает метод verify
модуля jsonwebtoken
для проверки его достоверности с использованием секретного ключа, определенного в переменной process.env.JWT_KEY
. Если токен недействителен, промежуточное ПО создает ошибку и передает ее следующему промежуточному ПО с помощью функции next
.
Если токен действителен, промежуточное ПО извлекает из него полезную нагрузку и сохраняет некоторые из его свойств в объекте req
для использования нижестоящим промежуточным ПО и функциями обработчика маршрутов. Наконец, функция вызывает функцию next
, чтобы передать управление следующей промежуточной функции в цепочке.
Отличная работа! мы создали авторизацию для наших приложений. Эту промежуточную функцию можно использовать в определениях маршрутов, чтобы защитить их от доступа без проверки подлинности, передав ее в качестве аргумента перед функцией обработчика маршрута в виде файла gig.route.js, описанного в третьей части. В следующей части мы реализуем вход в Firebase для нашего приложения, нажмите на ссылку ниже.
(ССЫЛКА НА ПЯТУЮ ЧАСТЬ)