SuperAPI AI 工具集

start-core/auth-server-primitives

安全与审计

查看项目

更新于 10-16 00:00

技能介绍

用途:为 TanStack Start 提供认证的服务端部分,包括会话存储、Cookie 签发、OAuth 流程、密码重置加固、CSRF 与限流。路由侧(_authenticated 布局、beforeLoad 重定向、RBAC)见 router-core/auth-and-guards。

主要能力:会话 Cookie 推荐使用 HttpOnly Cookie 保存不透明会话 ID 或签名/加密令牌,需同时设置 HttpOnly、Secure、SameSite=Lax、Path=/、Max-Age,并使用 __Host- 前缀绑定精确源。提供 setSessionCookie、clearSessionCookie、readSessionToken 等函数。会话查找可封装为 authMiddleware,通过 createMiddleware({ type: 'function' }).server(...) 集中加载会话,再以 .middleware([authMiddleware]) 挂到需要登录的服务端函数上。登录时先撤销旧会话再签发新会话,登出时撤销并清除 Cookie。OAuth 授权码流程需生成一次性 state 与 PKCE verifier,存入短时签名 Cookie,回调时校验 state 并交换 code。密码重置请求无论邮箱是否存在都返回相同响应,避免用户枚举。非 GET 的 RPC 需校验 Origin 完整源,登录端点应做按 IP 的滑动窗口限流。权限变更(登录、登出、改密、改角色)时轮换会话。

关键限制:路由守卫不能保护该路由上的 createServerFn,服务端函数是可被直接 POST 的 RPC 端点,鉴权必须在 handler 或中间件内完成。校验客户端标识的形状(如 UUID)不等于授权,仍需按会话主体复查成员关系。会话与 Cookie 必须在 .handler() 或中间件 .server() 内读取,不能在模块作用域读取,否则在 Cloudflare Workers 等边缘运行时为 undefined。不要用顶层 GET 导航执行变更操作。

适用场景:TanStack Start 应用的服务端认证实现与安全加固。