Skip to content

fix(dashboard): 保留中文入口登录语言 - #157

Merged
mirror29 merged 2 commits into
mainfrom
fix/dashboard-login-locale
Aug 19, 2026
Merged

fix(dashboard): 保留中文入口登录语言#157
mirror29 merged 2 commits into
mainfrom
fix/dashboard-login-locale

Conversation

@mirror29

@mirror29 mirror29 commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • 中文入口 /zh 未登录跳转后,登录页优先沿用返回路径中的 locale,不再被英文浏览器语言覆盖
  • 统一规范化站内返回路径,正确处理子路径、查询参数、片段和点段
  • 保留英文默认路径与直接访问 /login 时的浏览器语言回退

Test Coverage

新增 locale 纯函数与真实 LoginForm 渲染回归测试。路径判定、边界输入和组件接线覆盖率 100%,无已知缺口。

  • /zh/zh/*、query、hash
  • 英文默认路径和相似前缀
  • 点段、编码点段、反斜杠、绝对 URL、协议相对 URL
  • 服务端渲染真实表单文案

Pre-Landing Review

发现 1 个路径规范化问题并已修复;复审无 finding。DeepSeek 自动审查发现登录成功跳转仍使用宽松的原始 from,现已统一复用安全规范化结果并补充攻击输入回归测试。Codex CLI 未安装,本次本地对抗审查由 Claude 完成。

Design Review

Design Review (lite): 0 findings。

Eval Results

无 prompt 相关文件变更,跳过 eval。

Scope Drift

Scope Check: CLEAN。仅修改 Dashboard 登录语言选择及对应测试。

Plan Completion

本次为聚焦 bug 修复,无相关 plan 文件。

Verification Results

  • Dashboard Vitest:4 files / 28 tests passed
  • TypeScript:tsc --noEmit
  • Next.js 生产构建:29 个静态页面生成成功
  • 真实浏览器:英文环境访问 /zh 显示“邮箱 / 密码 / 登录”
  • 真实浏览器:访问 /en 保持英文
  • 浏览器 console 无错误
  • 仓库一致性检查:10 passed,0 failed

Test plan

  • 中文入口经过鉴权重定向后仍显示中文
  • 英文入口保持英文
  • 不安全或无 locale 的返回路径按既定回退处理

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

Review base: 3f48d0a

🤖 DeepSeek V4 Pro PR Review

PR 意图:登录页改为优先按返回路径 from 的 locale 前缀选择中/英文,并在登录成功后复用同一个安全规范化函数处理跳转,避免中文入口被浏览器语言覆盖,同时收紧了开放重定向防护。

[medium] apps/dashboard/src/components/auth/LoginForm.tsx:40-42 — 直接访问登录页(from 为空)时,语言仍取决于渲染期读取的 navigator.language;服务端渲染时 navigator 不存在会固定输出英文,客户端水合时中文浏览器才切换为中文,产生 hydration mismatch 和英文→中文闪跳。新增测试用 renderToStaticMarkup 只验证了 from=/zh 的静态渲染,没有覆盖这条真实浏览器路径。— 通用原则:正确性/可测性

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 19, 2026

Copy link
Copy Markdown

Deploying inalpha-web with  Cloudflare Pages  Cloudflare Pages

Latest commit: affecbe
Status: ✅  Deploy successful!
Preview URL: https://a96043d1.inalpha-web.pages.dev
Branch Preview URL: https://fix-dashboard-login-locale.inalpha-web.pages.dev

View logs

@mirror29

Copy link
Copy Markdown
Owner Author

已修复 DeepSeek 指出的开放重定向风险。

  • 登录语言判断与成功跳转现在共同复用 normalizeLoginReturnPath
  • 含反斜杠、协议相对地址、绝对 URL 的 from 会被拒绝
  • 点段和编码点段先规范化,再用于 locale 与跳转
  • 回归测试扩充到 28 项,typecheck 与 Next.js 生产构建通过

修复提交:affecbe

@mirror29

Copy link
Copy Markdown
Owner Author

DeepSeek 二轮的 hydration finding 属于既有的“直接访问 /login 时按 navigator.language 回退”行为,不是本次 /zh 修复引入的回归。

本 PR 的目标路径始终带 from=/zh:服务端和客户端都由同一返回路径选择中文,不依赖 navigator。本地生产构建后的真实浏览器验证中,英文浏览器访问 /zh 后直接显示中文,console 无 hydration error;/en 仍显示英文。

若要让无 from/login 首帧也按浏览器语言服务端渲染,需要由 server component 读取 Accept-Language 或引入 locale-aware 登录路由,属于独立改造,不在本次聚焦修复中。

@mirror29
mirror29 merged commit 069fe36 into main Aug 19, 2026
11 checks passed
@mirror29
mirror29 deleted the fix/dashboard-login-locale branch August 19, 2026 07:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant