4fbcff2bb48051a9f6415ef946591fc056512f34
- 修改get_current_user函数同时支持Authorization header和cookie获取token - 在logout接口中添加JSONResponse并清除webview cookie登录态 - 新增webview模块实现URL token到cookie的转换和安全重定向功能 - 实现域名白名单校验防止开放重定向漏洞 - 在main.py中注册webview路由
明缘进阶场 API(单 FastAPI 服务)
单服务承载 auth / pages / checkin / plan / profile / course-vote / survey / feedback,统一挂载在 /api/v1 下。
部署
-
安装依赖:
pip install -r server/requirements.txt -
配置环境变量(复制
server/.env.example后填写):WECHAT_APPID/WECHAT_SECRET:微信小程序凭证JWT_SECRET:JWT 签名密钥(>=32 字节随机串)ADMIN_KEY:反馈解决接口的管理密钥MYSQL_*:mys_info_test数据库连接SURVEY_DB:问卷库myxhxcPHONE_HMAC_KEY:手机号 HMAC 密钥,必须与既有phone_encrypted生成一致(默认MingYuan2026AuthKey)H5_BASE_URL:H5 模块基础地址(默认https://muguaclub.cn)FEEDBACK_DIR/COURSE_VOTES_FILE/PLAN_ATTACH_DIR:文件存储路径
-
执行 wechat_openid 迁移(一次性):
mysql mys_info_test < server/migrations/001_add_wechat_openid_column.sql -
启动:
uvicorn server.main:app --host 0.0.0.0 --port 8000 -
健康检查:
GET /api/v1/health返回{"ok": true}。
认证
POST /api/v1/auth/wechat-login:{code},wechat_openid命中自动登录;未命中返回need_phone=true。POST /api/v1/auth/bind-phone:{code, phone_code},手机号匹配后回填wechat_openid并登录。- 受保护接口使用
Authorization: Bearer <JWT>,不使用 cookie。
小程序
- 目录:
miniprogram/,四 tab(首页/打卡/计划/我的)。 - 首页调用
GET /api/v1/pages/home按返回顺序渲染,模块通过 web-view 打开并附带?token=。 - H5 引入
h5/shared/auth.js后,fetch自动附带 Bearer token。
测试
python -m pytest tests -q
Description
Languages
Python
82.7%
HTML
11%
Shell
3.7%
Dockerfile
2.6%