Часть 4: Разрешение на строительство

Всем привет! Добро пожаловать в четвертую часть нашей серии MERN Stack. Сегодня мы углубимся в создание авторизации для наших приложений. и если вы впервые здесь, вы можете увидеть другие части здесь:





Создание веб-приложения MERN Stack Freelancer 2023
Часть 2. Создание моделей данныхmedium.com





Чтобы начать эту статью, важно сначала понять разницу между аутентификацией и авторизацией. Аутентификация — это процесс проверки личности пользователя, обычно через систему входа в систему. Авторизация, с другой стороны, — это процесс предоставления или отказа в доступе к определенным ресурсам или действиям на основе разрешений аутентифицированного пользователя.

Например, веб-сайт может аутентифицировать пользователя с помощью имени пользователя и пароля, но разрешать ему только доступ к определенным страницам или выполнение определенных действий в зависимости от его роли, например администратора или обычного пользователя. В этой статье мы сосредоточимся на создании системы авторизации для веб-приложения стека 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 для нашего приложения, нажмите на ссылку ниже.

(ССЫЛКА НА ПЯТУЮ ЧАСТЬ)