该技能面向 TanStack Start 中服务器函数与服务器路由的中间件编写,目标是用 createMiddleware 组合横切关注点(日志、鉴权、上下文注入等),形成有序中间件链。技能基于 @tanstack/react-start,资料标注目标版本为 v1.168.58。
Key Rules(资料要求):
- 方法链顺序固定:.middleware() → .validator() → .client() → .server(),其他顺序会触发类型错误。
- 形状校验不等于授权:从 sendContext 解析出的合法 ID 只是格式正确,不是已授权;在使用客户端发送的值作为查询键、过滤条件或路径参数前,必须基于服务端可信会话重新检查访问权限。
- 客户端上下文默认不发送到服务端,需通过 next({ sendContext }) 显式选择加入;客户端发送的内容可被伪造,会话必须来自服务端可信源(如 cookie 与数据库),不能来自 sendContext。
- .client() 在 SSR 期间也会在服务端执行,使用 localStorage、window 等仅浏览器 API 时需加 typeof window !== 'undefined' 守卫。
- staticFunctionMiddleware(来自 @tanstack/start-static-server-functions,实验性)必须位于链的最后。
特点区分:
- 请求中间件(CreateMiddleware):作用范围为所有服务器请求(SSR、路由、函数),方法为 .server(),不支持输入校验与客户端逻辑。
- 服务器函数中间件(createMiddleware({ type: 'function' })):仅作用于服务器函数,方法包括 .client() 与 .server(),支持 .validator() 输入校验和客户端逻辑。
- 请求中间件不能依赖服务器函数中间件;服务器函数中间件可同时依赖两者。
使用流程(资料建议):
- 实现前先对照 Context7 与 Exa 验证当前 API,再浏览目标代码库;修改后运行 fuse-ai-pilot:sniper。
- 采用请求中间件从服务端可信 cookie 加载会话;在任何依赖客户端发送 ID 的操作前重新检查成员资格或角色。
- 对需要参数的授权使用工厂模式(按函数配置权限);保持方法链强制顺序。
资料包含的模板:鉴权加基于权限的授权工厂模板;客户端中间件模板(请求头、自定义 fetch、遥测)。
不适用场景:定义 RPC 本体(应使用 start-server-functions)、原始 HTTP 端点(应使用 start-server-routes)、路由级 UX 守卫(应使用 router 的 beforeLoad)。
资料未提供价格、收费模式、性能效果或支持的无关平台信息,这些内容暂未提供。