Middleware в Node.js/EXPRESS

Middleware используется для того, чтобы разделить различные этапы обработки запросов (авторизация, валидация, парсинг входных данных в удобный формат, основная логика) на промежуточные обработчики.

Обработчики, в ходе их выполнения решают передавать запрос следующем обработчике, или остановить обработку запроса и немедленно отдать клиенту какой-то ответ (обычно ошибку).

Middleware мы будем использовать для анализа, изменения запроса до отправки его в контроллер.

Создадим самый примитивный middleware, который будет проверять авторизован ли пользователь, если нет, то будет выбрасывать ошибку 401

Создадим в src файл:

$ touch auth.middleware.js

Middleware в Node.js/EXPRESS

В варианте продакшена мы должны анализировать токен, но здесь мы просто проверим его наличие в графе res.headers.authorization

server.js

Импортируем наш middleware:

import { authMiddleware } from "./src/auth.middleware.js";

Вставляем его в тот раздел, где нужно проверить авторизацию,

Например глобально

Middleware в Node.js/EXPRESS

Тогда мы при любом запросе без авторизации получим ошибку 401

Middleware в Node.js/EXPRESS

Если же мы авторизуемся:

Middleware в Node.js/EXPRESS

Можно Middleware добавить не глобально, а к нашим запросам по пути /api

Middleware в Node.js/EXPRESS

Тогда на запросы к любым другим адресам middleware не сработает:

Middleware в Node.js/EXPRESS
Middleware в Node.js/EXPRESS
Middleware в Node.js/EXPRESS
11
Начать дискуссию