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:
- пользователь запускает экспорт;
- задача уходит в очередь;
- после завершения job отправляется broadcast-событие;
- клиент получает ссылку на скачивание готового файла.
Вывод
В рамках работы с API использовал Laravel в задачах:
- построение защищённого API;
- проектирование auth-flow под разные типы клиентов;
- интеграция
OAuthи внешних identity providers; - real-time уведомления через WebSocket / Reverb;
- связка
queue + broadcast + APIв пользовательских сценариях.