Skip to content

Laravel: авторизация, API и real-time

Строил защищённый API и real-time сценарии на Laravel.

API и маршрутизация

Использовал versioned REST API (/api/v1) с явным разделением групп роутов:

  • публичные auth endpoint-ы;
  • защищённые маршруты с JWT middleware;
  • отдельные тяжёлые операции вроде экспорта и скачивания файлов;
  • fallback-ответы в формате application/problem+json.

Дополнительно используется отдельная проектная документация по API и auth-потокам.

JWT-авторизация

Реализованы два режима работы:

  • Bearer-токены для внешних API-клиентов;
  • HttpOnly cookies для browser/web-клиента.

Что есть на практике:

  • отдельный сервис для выпуска, refresh и logout JWT;
  • разделение access_token и refresh_token;
  • rotation refresh-токенов;
  • middleware refresh.jwt, auth.jwt, optional.jwt;
  • rate limit для логина, refresh, logout, сброса пароля и чувствительных операций.

Это хороший пример не "коробочной" авторизации, а кастомно собранного auth-flow внутри Laravel.

OAuth / Socialite

Дополнительно используется Laravel Socialite для входа через Яндекс:

  • redirect/callback flow;
  • валидация state через Socialite;
  • привязка внешнего аккаунта к локальному пользователю;
  • транзакционное создание/обновление social account записей;
  • отдельная обработка popup/web сценариев.

Real-time и broadcasting

Использовал Laravel Reverb и private channels:

  • пользовательские каналы вида users.{userId}.*;
  • авторизация подписки через отдельный channel authorizer;
  • broadcast-события для изменений профиля, сохранённых рецептов и завершения экспорта.

Отдельно реализован сценарий асинхронной генерации PDF:

  1. пользователь запускает экспорт;
  2. задача уходит в очередь;
  3. после завершения job отправляется broadcast-событие;
  4. клиент получает ссылку на скачивание готового файла.

Вывод

В рамках работы с API использовал Laravel в задачах:

  • построение защищённого API;
  • проектирование auth-flow под разные типы клиентов;
  • интеграция OAuth и внешних identity providers;
  • real-time уведомления через WebSocket / Reverb;
  • связка queue + broadcast + API в пользовательских сценариях.

Сайт обновлен и проверен: