Gardes de route
Route Guards vous permet de protéger les itinéraires avec des contrôles d'authentification, des autorisations ou d'autres logiques personnalisées.
Les gardes peuvent bloquer entièrement la navigation ou rediriger l’utilisateur vers un autre emplacement.
Valeurs de retour de garde
Une fonction de garde peut renvoyer :
true: Autoriser la navigation.false: Bloquer la navigation (reste sur la page en cours).string: redirige l'utilisateur vers la chaîne de chemin spécifiée.Promise<boolean | string>: les vérifications asynchrones (par exemple, les récupérations de base de données) sont entièrement prises en charge.
Gardes mondiaux
Les gardes globaux s'exécutent à chaque événement de navigation, avant tout garde spécifique à l'itinéraire.
typescript
function registerGlobalGuard(
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): voidExemple
javascript
import { registerGlobalGuard } from '@beforesemicolon/router'
// Authentication guard
registerGlobalGuard((pathname, query, state) => {
const publicPages = ['/login', '/register', '/404']
if (!publicPages.includes(pathname) && !userIsLoggedIn()) {
return '/login' // Redirect to login
}
return true // Allow navigation
})Gardes spécifiques à la route
Les gardes spécifiques à l'itinéraire s'exécutent uniquement lors de la navigation vers un chemin qui correspond au modèle enregistré.
typescript
function registerRouteGuard(
pattern: string,
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): voidExemple
javascript
import { registerRouteGuard } from '@beforesemicolon/router'
// Role-based authorization guard (Async)
registerRouteGuard('/admin/:section', async (pathname, query, state) => {
try {
const hasAccess = await checkAdminPermissions()
return hasAccess ? true : '/unauthorized'
} catch {
return false // Block navigation on error
}
})Ordre d'exécution de la garde
- Global Guards : Exécutés dans l'ordre dans lequel ils ont été enregistrés.
- Gardes spécifiques à l'itinéraire : Exécutés dans l'ordre dans lequel ils ont été enregistrés.
- Le premier garde qui renvoie
falseou une redirectionstringarrête immédiatement l'exécution ; les gardes suivants sont ignorés.