Я реализую шлюзование маршрутов на стороне сервера в приложении Next.js (v16+) App Router, где пользователь должен выполнить необходимый шаг (например, проверку личности или поток соответствия) перед доступом к защищенным маршрутам, таким как /dashboard.
Я уже понимаю, как заблокировать доступ с помощью промежуточного программного обеспечения + проверка API, но я пытаюсь определить правильную архитектурную границу для долгосрочной безопасности и правильности.
В частности, я оценка:
- Промежуточное программное обеспечение Next.js (среда выполнения Edge)
- Серверные компоненты с перенаправлениями
- Обработчики маршрутов (время выполнения Node) как источник истины
Мои требования:
- Принудительное соблюдение должно быть на стороне сервера и необходимым
- Прямая навигация по маршруту не должна работать
- Проверка должна выполняться перед рендерингом защищенного контента.
- Требуется доступ к базе данных (поэтому ограничения Edge имеют значение).
Вопросы:
1. В каких случаях промежуточное ПО является подходящим уровнем реализации по сравнению с серверными компонентами?
2. Считается ли антипаттерном полагаться на промежуточное программное обеспечение + внутренние вызовы API для авторизации?
3. Какой «авторитетный» шлюз в App Router рекомендуется использовать для потоков, критичных к соблюдению требований или платежей?
Мне не нужны средства защиты на стороне клиента или перенаправления только для UX — только шаблоны, заслуживающие доверия на сервере.
Подробнее здесь: https://stackoverflow.com/questions/798 ... with-middl