Как я могу обеспечить выполнение шага на стороне сервера, прежде чем разрешить доступ к маршруту в Next.js?Javascript

Форум по Javascript
Ответить
Anonymous
 Как я могу обеспечить выполнение шага на стороне сервера, прежде чем разрешить доступ к маршруту в Next.js?

Сообщение Anonymous »

Я создаю приложение Next.js, в котором пользователи должны выполнить необходимый шаг (например, проверку личности или этап понимания), прежде чем им будет разрешен доступ к определенным защищенным маршрутам.
Ключевое требование заключается в том, что это обеспечение должно осуществляться на стороне сервера и не может быть обойти. Защиты на стороне клиента (например, проверка состояния React или перенаправление в useEffect) недостаточны, поскольку пользователь может обойти их, манипулируя клиентом или перейдя непосредственно к маршруту.

Что я пробовал
  • Защитники маршрутов на стороне клиента с использованием состояния React и перенаправлений
  • Проверка флагов завершения в браузере перед отображением страницы.
Эти подходы работают для базового UX, но не обеспечивают реального обеспечения соблюдения, поскольку доступ к маршруту по-прежнему возможен, если клиент подделан или осуществляется прямая навигация.

Чего я пытаюсь достичь
Я хочу, чтобы сервер был авторитетным в отношении маршрута доступ. Если необходимый шаг не был выполнен (как записано на стороне сервера), пользователь должен быть заблокирован или перенаправлен перед отображением страницы.

Минимальный пример
Предположим, у меня есть флаг завершения, хранящийся на стороне сервера (например, в базе данных):

Код: Выделить всё

// example server-side check
const hasCompletedStep = await db.userSteps.isComplete(userId);
Я хочу запретить доступ к маршруту типа /dashboard, если hasCompletedStep === true.
Каков рекомендуемый способ обеспечить это в Next.js (App Router или Pages Router), используя такие механизмы, как промежуточное программное обеспечение, серверные компоненты или обработчики маршрутов, чтобы контроль доступа нельзя было обойти на стороне клиента?

Уточнение
Мне не нужны охранники, занимающиеся только пользовательским интерфейсом. Меня особенно интересуют шаблоны шлюзования маршрутов, обеспечиваемые сервером, которые гарантируют, что пользователь не сможет получить доступ к защищенному маршруту, пока не будет выполнен необходимый шаг.

Подробнее здесь: https://stackoverflow.com/questions/798 ... to-a-route
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»