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 :


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>
): void

Exemple

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>
): void

Exemple

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

  1. Global Guards : Exécutés dans l'ordre dans lequel ils ont été enregistrés.
  2. Gardes spécifiques à l'itinéraire : Exécutés dans l'ordre dans lequel ils ont été enregistrés.
  3. Le premier garde qui renvoie false ou une redirection string arrête immédiatement l'exécution ; les gardes suivants sont ignorés.
modifier ce document