Guardias de ruta
Route Guards le permite proteger rutas con comprobaciones de autenticación, autorización u otra lógica personalizada.
Los guardias pueden bloquear la navegación por completo o redirigir al usuario a una ubicación diferente.
Valores de retorno de guardia
Una función de guardia puede devolver:
true: Permitir la navegación.false: Bloquea la navegación (permanece en la página actual).string: Redirige al usuario a la cadena de ruta especificada.Promise<boolean | string>: Las comprobaciones asíncronas (por ejemplo, recuperaciones de bases de datos) son totalmente compatibles.
Guardias globales
Las guardias globales se ejecutan en cada evento de navegación, antes que cualquier guardia específica de ruta.
typescript
function registerGlobalGuard(
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): voidEjemplo
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
})Guardias de ruta específica
Los guardias específicos de ruta se ejecutan solo cuando se navega a una ruta que coincide con el patrón registrado.
typescript
function registerRouteGuard(
pattern: string,
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): voidEjemplo
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
}
})Orden de ejecución de la guardia
- Guardias Globales: Ejecutados en el orden en que fueron registrados.
- Guardias de Ruta Específica: Ejecutados en el orden en que fueron registrados.
- La primera guardia que devuelve
falseo una redirecciónstringdetiene la ejecución inmediatamente; Se saltan las guardias posteriores.