Skip to content

认证 API

认证接口覆盖验证码登录注册、密码登录注册和健康信息完成标记。除 POST /api/auth/complete-health-info 外,认证入口不要求 Bearer JWT。

Endpoint 索引

MethodPath鉴权用途
POST/api/auth/send-sms发送短信验证码。
POST/api/auth/register验证码注册;手机号已存在时直接登录。
POST/api/auth/login验证码登录;用户不存在时自动创建。
POST/api/auth/register-password手机号密码注册。
POST/api/auth/login-password手机号密码登录。
POST/api/auth/complete-health-infoBearer JWT标记健康信息已完成。

Endpoint 契约

POST /api/auth/send-sms

内容
Requestphone,大陆手机号格式
Responsesuccessmessage
Errors422 手机号格式;429 频率限制;500 短信失败
ConsumerAuthApiClient.sendSmsCode
Handlerauth.send_sms_code
DB Touchpointssms_verifications;读近期验证码记录做限流
Teststests/api/test_auth.pytests/api/test_auth_dependency.pytest/api/auth_api_client_test.dart

POST /api/auth/register

内容
Requestphone、6 位 code
Responsesuccessmessagetokenuser_id
Errors400 验证码无效;422 参数格式;500 注册失败
ConsumerAuthApiClient.register
Handlerauth.register_user
DB Touchpoints读写 sms_verifications;读写 users;写 login_logs
Teststests/api/test_auth.py

POST /api/auth/login

内容
Requestphone、6 位 code
Responsesuccessmessagetokenuser_id
Errors400 验证码无效;422 参数格式;500 登录失败
Consumer旧验证码登录链路
Handlerauth.login_user
DB Touchpoints读写 sms_verifications;读写 users;写 login_logs
Teststests/api/test_auth.py

POST /api/auth/register-password

内容
Requestphonepasswordconfirm_password
Responsesuccessmessagetokenuser_idhealth_info_completed=false
Errors400 密码不一致/手机号已存在/密码规则失败;422 参数格式;500 注册失败
ConsumerAuthApiClient.registerWithPassword、密码注册页
Handlerauth.register_with_password
DB Touchpointsusers;写 login_logs
Teststests/services/test_auth_service.py、Flutter auth tests

POST /api/auth/login-password

内容
Requestphonepassword
Responsesuccessmessagetokenuser_idhealth_info_completed
Errors400 认证服务校验失败;401 手机号或密码错误;422 参数格式;500 登录失败
ConsumerAuthApiClient.loginWithPassword、密码登录页
Handlerauth.login_with_password
DB Touchpointsusers;写 login_logs
Teststests/services/test_auth_service.pytest/screens/auth/password_login_screen_test.dart

POST /api/auth/complete-health-info

内容
Request空 body
Responsesuccessmessage
Errors401 token 无效;500 标记失败
ConsumerAuthApiClient.completeHealthInfo
Handlerauth.complete_health_info
DB Touchpoints更新 users.health_info_completed
Teststests/api/test_auth_dependency.py

Request 字段

字段类型约束用于
phonestring^1[3-9]\d{9}$短信、验证码登录注册、密码登录注册
codestring长度 6验证码注册/登录
passwordstring6-128 字符;具体强度由 AuthService 校验密码注册/登录
confirm_passwordstring必须与 password 一致密码注册

Response 形态

json
{
  "success": true,
  "message": "登录成功",
  "token": "<jwt>",
  "user_id": "<user-id>",
  "health_info_completed": true
}

token 只在认证成功时返回。正式文档和日志中不得写入真实 JWT。

来源锚点

  • Router: apps/backend_service/app/api/auth.py
  • Dependency: apps/backend_service/app/api/auth_dependencies.py
  • Service: apps/backend_service/app/services/auth_service.py
  • Flutter: apps/flutter_app/lib/api/auth_api_client.dart
  • Tests: apps/backend_service/tests/api/test_auth.pyapps/backend_service/tests/api/test_auth_dependency.pyapps/flutter_app/test/api/auth_api_client_test.dart