返回管理后台 ↗
接口文档 / 鉴权登录 / 教师登录

教师登录公共只读

账号密码登录(公开)。后端把 loginName 拼成虚拟邮箱后调 Supabase GoTrue 验密,再查共享 profiles 校验 role=teacher 且 status=enabled,通过后用本端 jwt_secret 自签 access(120min)/refresh(30d) 令牌对并返回教师档案。失败:口令错 401;非教师或已停用 403。未配 Supabase 且 DEV_LOGIN=1 时放行任意账号供本地联调。

POST/api/teacher/login

鉴权

本接口无需鉴权(公开接口,在中间件白名单内)。

请求参数

参数名类型必填默认值说明
loginNamebodystring必填 *登录名(学号/手机号/自定义登录名),全库唯一;后端 strip+lower 后拼虚拟邮箱
passwordbodystring必填 *登录密码(明文传输,后端交 Supabase 校验,非前端预哈希)

请求示例

curl -X POST 'https://teacher-api.weizhiqingtu.com/api/teacher/login' \
  -H 'Content-Type: application/json' \
  -d '{"loginName":"示例值","password":"示例值"}'

响应示例 · 200 application/json

{
  "code": 0,
  "message": "ok",
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "eyJhbGciOiJIUzI1Ni...refresh",
    "teacher": {
      "id": "9f1c0b2a-...",
      "name": "测试老师",
      "role": "teacher",
      "code": "zujuan_test",
      "phone": null,
      "avatar": null,
      "schoolId": "0a2b4c6d-...",
      "schoolName": "金陵实验中学",
      "isAdmin": false
    }
  }
}
字段类型说明
accessTokenstring访问令牌,有效期 120 分钟;后续接口放 Authorization: Bearer 头
refreshTokenstring刷新令牌,有效期 30 天;用于 /refresh 续期
teacher.isAdminboolean是否运维后台管理员(由后端 ADMIN_LOGINS 名单判定)
teacher.schoolIdstring所属学校 ID,教师数据按此行级隔离

错误码

状态码错误标识说明
400bad_request请求参数校验失败
401账号或密码错误GoTrue 验密失败或账号不存在
403非教师账号 / 账号已停用profiles.role≠teacher 或 status≠enabled
404not_found资源不存在
500internal_error服务端内部错误
503auth not configured生产环境未配置 Supabase