该技能聚焦 TanStack Router 的认证与路由守卫,属于前端导航层面的 UX 与访问控制,不替代服务端数据边界。核心用法是在路径无关布局路由(如 _authenticated)的 beforeLoad 中检查 context.auth.isAuthenticated,未登录则 throw redirect({ to: '/login', search: { redirect: location.href } });放在该目录下的路由自动受保护。认证状态通过 createRootRouteWithContext 与 RouterProvider 的 context 属性注入,避免因登录状态变化重建 router。支持带回跳的重定向登录,需对 redirect 参数做校验以防止开放重定向;也支持在布局内直接渲染登录表单的非重定向方式,URL 保持不变。RBAC 可基于角色的 hasRole/hasAnyRole 或权限的 hasAnyPermission 在布局或页面级 beforeLoad 中判断并重定向到未授权页。若 beforeLoad 使用 try/catch,需用 isRedirect 重新抛出重定向,避免被吞掉。重要限制:路由守卫不能保护同一路由上声明的 createServerFn,服务端函数是可被独立调用的 RPC 端点,必须在 handler 上使用 authMiddleware 或等价的内部校验;匿名响应页面也不应通过标题、文案、查询参数或序列化状态泄露受保护数据。同时应避免在组件内做鉴权导致受保护内容闪现,根路由组件始终渲染无法用于鉴权,应改用布局路由划分边界。服务端会话 Cookie、OAuth、CSRF、限流等不在本技能范围,需参见相关服务端技能。资料未提供具体版本、安装命令与收费信息。
tanstack-router-core-auth-and-guards
安全与审计
更新于 10-16 00:02