路线守卫
路由防护允许您通过身份验证检查、授权或其他自定义逻辑来保护路由。
警卫可以完全阻止导航或将用户重定向到不同的位置。
保护返回值
保护函数可以返回:
true:允许导航。false:阻止导航(保留在当前页面)。string:将用户重定向到指定的路径字符串。Promise<boolean | string>:完全支持异步检查(例如数据库获取)。
全球卫士
全局守卫在任何特定于路线的守卫之前在_每个_导航事件上执行。
typescript
function registerGlobalGuard(
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): void示例
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
})特定路线的守卫
仅当导航到与注册模式匹配的路径时,特定于路线的防护才会运行。
typescript
function registerRouteGuard(
pattern: string,
guard: (
pathname: string,
query: Record<string, unknown>,
data: Record<string, unknown>
) => boolean | string | Promise<boolean | string>
): void示例
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
}
})警卫处决令
- 全局守卫: 按照注册顺序执行。
- 特定于路线的守卫: 按照注册的顺序执行。
- 返回
false或重定向string的_first_守卫立即停止执行;随后的守卫将被跳过。