# 【前端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-url` → `https://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/:token` 的 `meta.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.requiresAuth`**、`requiresAuth: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/:token`（token 是**路径参数**）。
- 但后端 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=真token` 返 `200 success`（后端校验链路 OK）。
- 即：**后端全通，只要前端表单能在 `/driver-intake/{token}` 公开渲染，整条链路立刻打通**，我随即重提阿里云短信模板并收尾。

## 验收（前端修完后这样验）

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