用途:这是 TanStack Router 的路由侧鉴权技能,负责导航与页面访问控制,不负责数据/API 边界。
主要能力:用 beforeLoad 配合 redirect() 在无路径布局路由 _authenticated 中拦截未登录访问,放在 src/routes/_authenticated/ 下的路由自动受保护;通过 createRootRouteWithContext 与 RouterProvider 的 context 属性注入鉴权状态,避免重建 router;支持登录后回跳(把 location.href 存入 search 参数,并用 sanitizeRedirect 校验目标防开放重定向);支持非重定向的内联登录表单;支持基于角色与权限的 RBAC(hasRole、hasAnyRole、hasPermission、hasAnyPermission);用 isRedirect 在 try/catch 中重新抛出被吞掉的 redirect。
使用方式:在 beforeLoad 中检查 context.auth.isAuthenticated,未通过则 throw redirect({ to: '/login', search: { redirect: location.href } });鉴权状态经路由 context 流入 loader。
限制与注意:路由守卫不保护该路由上声明的 createServerFn,服务器函数是可独立访问的 RPC 端点,需在 handler 上用 authMiddleware 或等价检查;匿名页面本身也可能泄露受保护数据,需检查标题、文案、search 参数与序列化 loader 状态;不要在组件内做鉴权检查(会闪现受保护内容);根路由组件始终渲染,不能条件渲染来鉴权。服务器侧会话、OAuth、CSRF 等见 start-core/auth-server-primitives。具体收费与平台信息暂未提供。