API 参考

认证接口

认证模块提供用户注册、登录、信息管理等功能,挂载于 /api/auth

用户注册

POST /api/auth/register

创建新用户账号。注册成功后直接返回 JWT Token,无需再次登录。

请求体

{
  "username": "student01",       // 必填,唯一,3-50位
  "email": "stu@example.com",    // 必填,唯一,有效邮箱格式
  "password": "pass123",         // 必填,最少6位
  "displayName": "张三",          // 必填,显示名称
  "role": "student",             // 可选,默认 "student"(student/teacher)
  "grade": "高中二年级",          // 可选
  "subjects": ["数学", "物理"]   // 可选,JSON 数组
}

成功响应 201

{
  "success": true,
  "message": "注册成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "username": "student01",
      "email": "stu@example.com",
      "displayName": "张三",
      "role": "student",
      "grade": "高中二年级"
    }
  }
}

错误响应

状态码原因
400必填项缺失或密码不足6位
409用户名或邮箱已存在

用户登录

POST /api/auth/login

支持用户名或邮箱登录,成功后返回 JWT Token 和用户信息。

请求体

{
  "username": "student01",   // 用户名或邮箱均可
  "password": "pass123"
}

成功响应 200

{
  "success": true,
  "message": "登录成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "username": "student01",
      "email": "stu@example.com",
      "displayName": "张三",
      "role": "student",
      "grade": "高中二年级",
      "subjects": ["数学", "物理"],
      "avatar": null
    }
  }
}

获取当前用户信息

GET /api/auth/me 需要认证

成功响应 200

{
  "success": true,
  "data": {
    "id": "550e8400-...",
    "username": "student01",
    "email": "stu@example.com",
    "display_name": "张三",
    "displayName": "张三",
    "role": "student",
    "grade": "高中二年级",
    "subjects": ["数学", "物理"],
    "avatar": null,
    "created_at": "2024-01-01T00:00:00.000Z",
    "last_login": "2024-01-15T08:00:00.000Z"
  }
}

更新用户资料

PUT /api/auth/profile 需要认证

请求体

{
  "displayName": "李四",
  "grade": "高中三年级",
  "subjects": ["数学", "化学", "英语"],
  "avatar": "https://example.com/avatar.png"
}

成功响应 200

{ "success": true, "message": "更新成功" }

修改密码

PUT /api/auth/password 需要认证

请求体

{
  "oldPassword": "pass123",
  "newPassword": "newpass456"    // 最少6位
}

获取用户列表

GET /api/auth/users 需要认证

返回平台内所有活跃用户的基本信息,用于分享功能的用户选择。

成功响应 200

{
  "success": true,
  "data": [
    {
      "id": "550e8400-...",
      "username": "student01",
      "display_name": "张三",
      "role": "student",
      "grade": "高中二年级",
      "avatar": null
    }
  ]
}