hl-api-changelog/changelogs-v2/2026-06/13_司机录入H5表单打不开-导航守卫误拦公开路由-前端BUG.md

4.4 KiB

【前端BUG·司机录入H5】司机录入链接打不开/driver-intake 公开路由被导航守卫误拦去登录页

hl-ui司机自助录入 H5,fleet 二期) | 严重度:P0(整条司机自助录入前端不可用,阿里云短信模板因此过不了审) | 后端/基建已全部就绪,仅差前端这一处 | 2026-06-13


2026-06-15 已解决(误报更正,前端无需改动)

此前判断"前端导航守卫 bug"系误报——真因在后端 URL,已由后端修复,前端不用动。

  • 真因:① onboard 长链/h5/ 前缀(前端公开路由是 /h5/driver-intake/:token,后端却生成 /driver-intake/...,落到了非公开的 /driver-intake,被守卫正确拦去登录);② token 用 ?t= 查询参数(应路径参数)。
  • 修复(均后端侧):buildOnboardUrl 改路径参数PR #3803+ Nacos onboard-base-urlhttps://web.test.1814.love:9443/h5/driver-intake
  • 已验证:web.test:9443/h5/driver-intake/{token}hr.1814.love/h5/driver-intake/{token} 均正常公开渲染录入表单。/h5/driver-intake/:token 前端路由本就正常,守卫无 bug。 阿里云短信模板已重提审核。
  • mmg 无需任何改动,可忽略下方原"问题一/问题二"。

⚠️ 现象

司机点开录入短信里的链接,落地页不是录入表单,而是被重定向到管理后台登录页。阿里云短信模板 SMS_508070093 三次被拒,最新拒因「根据您提供的链接,核实功能内容太少,无法判断实际内容」——因为审核员打开链接看到的不是录入表单。

1. 问题一P0 · 导航守卫误拦公开路由)—— 需前端修

  • 路由 /driver-intake/:tokenmeta.requiresAuth 已是 false(公开),但全局导航守卫仍把未登录访问重定向到 /login
  • 复现:浏览器直接开 https://web.test.1814.love:9443/driver-intake/{有效token} → 立即跳 https://web.test.1814.love:9443/login?redirect=/driver-intake/{token}
  • 司机是 C 端、没有后台账号,这个页面必须公开放行。
  • 精确定位2026-06-15 补充):守卫代码是 if (to.meta.requiresAuth !== false && !token) → 跳 Login,即守卫确实读 meta.requiresAuthrequiresAuth:false 本应放行。但实测 /driver-intake/{token} 仍被拦,说明部署在测试服 /var/www/hl-admin 的这份构建里,driver-intake 路由在运行时 to.meta.requiresAuth 并不等于 false(源码里 grep 到过 requiresAuth:!1,但运行时没生效——疑似重复/陈旧路由定义,或该 build 未带上 requiresAuth:false)。
  • 修法:确认 /driver-intake/:token 路由 meta.requiresAuth:false最终构建/部署里真正生效(重新 build + 部署到 web.test,运行时该路由不应跳登录。

2. 问题二URL token 参数格式契约不一致)—— 后端来对齐,前端无需动

  • 前端路由是 /driver-intake/:tokentoken 是路径参数)。
  • 但后端 onboard 长链历史生成的是 /driver-intake?t={token}查询参数),两者对不上、路由不匹配。
  • 我(后端)改 buildOnboardUrl → 生成 /driver-intake/{token},对齐你们现有路由。前端这条不用动。(等问题一修好、表单能渲染后我同步改+联调。)

后端 / 基建现状(已就绪,仅说明,无需前端关心)

  • hr.1814.love 已配独立 Let's Encrypt 证书(此前它没有独立配置、用了 aboutme 的证书导致域名不匹配,是阿里云最初拒因「链接无法打开」,已修)。
  • 短链 hr.1814.love/s/t{code} → 转发回测试服解析 → 302 到 onboard 链接,已验证。
  • hr.1814.love/app/h5/**(录入页后端接口)→ 转发回测试 fleet,init?token=真token200 success(后端校验链路 OK
  • 即:后端全通,只要前端表单能在 /driver-intake/{token} 公开渲染,整条链路立刻打通,我随即重提阿里云短信模板并收尾。

验收(前端修完后这样验)

浏览器开 https://web.test.1814.love:9443/driver-intake/{管理后台生成的有效token}不登录)应直接渲染司机录入表单(身份证 / 驾驶证 / 行驶证等录入项),而不是跳登录页。修好后回执我,我立即改后端 URL 格式 + 联调 + 重提阿里云模板。