Proteções de rota
Proteções de rota permitem resguardar rotas com verificações de autenticação, autorização ou outra lógica personalizada.
Elas podem bloquear completamente a navegação ou redirecionar o usuário para outro local.
Valores retornados pela proteção
Uma função de proteção pode retornar:
true: permite a navegação.false: bloqueia a navegação e permanece na página atual.string: redireciona o usuário para o caminho informado.Promise<boolean | string>: verificações assíncronas, como consultas ao banco de dados, têm suporte completo.
Proteções globais
Proteções globais são executadas em todos os eventos de navegação, antes das proteções específicas de rota.
typescript
function registerGlobalGuard(
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): voidExemplo
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
})Proteções específicas de rota
Proteções específicas são executadas somente ao navegar para um caminho que corresponde ao padrão registrado.
typescript
function registerRouteGuard(
pattern: string,
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): voidExemplo
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
}
})Ordem de execução das proteções
- Proteções globais: executadas na ordem em que foram registradas.
- Proteções específicas de rota: executadas na ordem em que foram registradas.
- A primeira proteção que retorna
falseou umastringde redirecionamento interrompe a execução imediatamente; as demais são ignoradas.