Глобальный посредник в Nuxt
Именованный посредник срабатывает
только там, где его указали в
definePageMeta. Иногда проверку
нужно повесить на весь сайт: закрытые
пути, общий журнал переходов или
единое правило для всех адресов.
Для этого имя файла дополняют
суффиксом .global перед
расширением.
Файл auth.global.js Nuxt подхватит
автоматически на каждом переходе.
Поле middleware на страницах
для него не нужно. Достаточно
переименовать обычный auth.js
в auth.global.js, если вы
уже пользовались именованным вариантом.
Давайте разберём глобальную проверку,
которая не пускает на служебный
адрес /hidden:
export default defineNuxtRouteMiddleware((to) => {
if (to.path === '/hidden') {
return navigateTo('/home');
}
});
Любая страница, кроме /hidden,
откроется как раньше. При обращении
к /hidden сработает редирект
на /home независимо от того,
есть ли у hidden.vue своё
поле middleware. Суффикс
global и есть признак такого
поведения.
Для проверки заведём простые экраны:
<template>
<h1>
Home
</h1>
</template>
Страница скрытого раздела может содержать любой текст, но до неё пользователь не дойдёт, пока активен глобальный посредник:
<template>
<h1>
Hidden
</h1>
</template>
Сделайте глобальный посредник,
который при адресе /private
отправляет пользователя на /login.
Сделайте страницу login
с заголовком Login для проверки
редиректа с /private.