Middleware 与认证

Middleware 是请求进入 Start 服务端时的横切逻辑,适合做认证、会话解析、日志、请求 ID 和上下文注入。

Middleware 适合做什么?

任务示例
读取会话从 cookie 解析 session
注入上下文加入 userdbrequestId
权限检查未登录跳转 /login
安全策略CSRF、Origin 检查、速率限制
可观测性记录耗时、trace id

认证分层

可靠的 Start 应用通常有三层保护:

  1. Middleware:解析 session,注入 user
  2. beforeLoad:进入受保护路由前检查 user
  3. Server Function / Server Route:真正执行写操作前再次授权

不要只在组件中隐藏按钮。UI 限制不是安全边界。

beforeLoad 保护页面

export const Route = createFileRoute('/dashboard')({
  beforeLoad: ({ context }) => {
    if (!context.user) throw redirect({ to: '/login' })
  },
})

写操作再次鉴权

const deletePost = createServerFn({ method: 'POST' })
  .validator((input: { id: string }) => input)
  .handler(async ({ data, context }) => {
    if (!context.user) throw new Error('Unauthorized')
    await assertCanDelete(context.user, data.id)
    return db.post.delete({ where: { id: data.id } })
  })

Server Function 是最终安全边界。

CSRF 与同源

Server Functions 属于同源 RPC。若自定义 src/start.ts,确认保留官方 CSRF / Origin 检查。公开跨域端点应使用 Server Routes,并单独配置 CORS、签名或鉴权。

下一步