← 返回博客列表

为贴近真实考试体验,「破境刷题」增加了 PC 端电脑机考模拟系统。用户无需在 PC 端输入账号密码, 而是通过小程序扫码完成授权。本文介绍该功能的技术方案。

整体流程

  1. PC 浏览器打开机考页面,请求后端创建二维码会话
  2. 后端生成 sessionId,写入 Redis(TTL 300 秒),返回二维码图片
  3. PC 端每 2 秒轮询会话状态,同时显示倒计时
  4. 用户在小程序「机考扫码」页扫描,携带 miniToken 确认授权
  5. 后端校验用户身份,签发 PC 专用 token,PC 端检测到 confirmed 后进入选卷

二维码内容设计

二维码文本格式为 CEXAM:{sessionId},小程序扫码后解析 sessionId, 调用确认接口。这种方式不依赖微信开放平台网站应用扫码,实现更简单。

// 后端 Redis 存储结构
{
  "status": "pending",
  "createdAt": 1718000000000
}

// 确认后
{
  "status": "confirmed",
  "token": "pc_token_xxx",
  "user": { "nickName": "...", "subjectName": "..." }
}

PC 端界面

机考页采用原生 HTML/CSS/JS,仿官方医学机考配色与布局,包含: 扫码登录 → 选卷(往年真题 / 章节练习)→ 考前规则 → 作答 → 交卷结果。

登录页二维码下方需实时显示「300 秒内有效」倒计时,到期自动提示刷新。 右上角提供退出登录,清除 localStorage 中的 token 回到扫码页。

安全注意点

  • 二维码会话短时效(300 秒),过期自动失效
  • PC token 与小程序 token 分离,便于独立吊销
  • 确认接口必须校验小程序端已登录用户

小结

扫码登录让 PC 机考与小程序账号体系打通,用户科目、授权状态保持一致。 该方案实现成本低、体验流畅,适合个人开发者的刷题类产品扩展桌面端场景。