文档

认证系统

使用 InsForge Auth 构建用户认证

HackerStart 使用 InsForge Auth 作为认证方案,集成在 src/auth/server.ts 中。

认证功能

  • 邮箱密码注册/登录
  • 密码重置(邮件验证码)
  • Session 管理(TanStack Start session)
  • 多工作区切换

环境变量

# InsForge SDK
INSFORGE_URL=http://localhost:8000
INSFORGE_ANON_KEY=your-anon-key
INSFORGE_API_KEY=your-api-key

# Session 加密密钥(至少 32 字符)
SESSION_SECRET=openssl rand -base64 32

核心 API

注册

import { signUp } from '@/auth/server'

// 通过 createServerFn 调用
const result = await signUp({ data: { email, password, name } })

注册成功后会自动创建默认工作区并写入 session。

登录

import { signIn } from '@/auth/server'

const result = await signIn({ data: { email, password } })

密码重置

  1. 发送重置邮件:requestPasswordReset({ data: { email, redirectTo } })
  2. 验证并重置:resetPassword({ data: { code, newPassword } })

获取当前用户

import { getAppSession } from '@/auth/session'

const session = await getAppSession()
const data = session.data
// { userId, email, name, activeTenantId }

路由保护

使用 TanStack Router 的 beforeLoad 进行路由守卫:

// src/routes/_authenticated.tsx
export const Route = createFileRoute('/_authenticated')({
  beforeLoad: async ({ context }) => {
    if (!context.session?.userId) {
      throw redirect({ to: '/_auth/login' })
    }
  },
})

Session 架构

Session 数据存储在加密 cookie 中:

字段说明
userIdInsForge 用户 ID
email用户邮箱
name用户名
activeTenantId当前活跃工作区 ID

本页内容