[Bug Report] 论坛登录"成功"但始终显示未登录、登录按钮无响应
Tofloor
poster avatar
chenkun_lws
deepin
5 hours ago
Author

排查日期:2026-08-13 · 系统:deepin 25(ostree,X11)· 浏览器:Microsoft Edge 151.0.4129.78
状态:成因已查明并自行解决。发帖目的:① 向官方反馈两个可改进点;② 帮遇到同样问题的用户快速自救。


一、现象

  • 论坛首页正常打开、正常浏览
  • 点"登录" → 登录页正常打开 → 输入正确的手机号 + 密码 → 提示登录成功
  • 跳回论坛后仍显示未登录
  • 之后再点"登录"按钮,登录页不再弹出(按钮看似无响应)
  • 反复重试 5 次以上,每次账号侧都提示成功,论坛侧始终无登录态

补充说明:我的网络环境使用了带"国内外分流"功能的网络工具,问题仅在该工具开启时出现,让 deepin 域名直连后一切恢复正常(详见三、四节)。


二、排查过程与证据

2.1 账号侧认证其实是成功的

浏览器历史记录显示,每次登录都完整走完了 OAuth 流程

bbs.deepin.org/api/v1/login
  → login.deepin.org/oauth2/authorize
  → login.deepinid.deepin.com/api/oauth2/writehead
  → account.deepin.org/login              ← 手机号+密码认证在此完成
  → bbs.deepin.org/api/v1/login/callback?code=...   ← 回调每次都执行了
  → bbs.deepin.org/                       ← 回到首页,但未登录

故障发生在"跳回论坛建立会话"的最后一步。

2.2 论坛会话 cookie 从未建立成功

Edge 的 Cookie 数据库中,bbs.deepin.org 的会话 cookie(deepinbbs_session_cookie)时间戳停留在之前某次成功建立的旧记录上——之后连续 5 次完整登录流程都没有写入新会话,证明回调请求实际未成功完成。

同时注意到论坛域名下存在 cf_clearance cookie——论坛前端套了 Cloudflare

2.3 域名解析:deepin 全系服务都在境外 IP 段

公开 DNS 查询(任何人可复现验证):

域名 解析结果 IP 归属
bbs.deepin.org CNAME →cloudflare-cn.getdeepin.org198.41.206.154 Cloudflare 网段,GEOIP 归属境外
login.deepin.org 47.239.232.129 境外云服务商网段(GEOIP 归属美国)
account.deepin.org 47.239.232.129 同上
utcloud.deepin.org 47.239.232.129 同上

注意 cloudflare-cn 这个名字虽然带 "cn",但其 A 记录实际归属 Cloudflare 境外网段。

2.4 经分流工具境外出口访问时论坛返回 403

【实测】同一请求、同一时段:

访问方式 结果 耗时
经分流工具境外节点出口 HTTP 403(Cloudflare 拦截页) 5.7s
直连(家庭宽带 IP) HTTP 200 1.8s

三、成因分析

【实测事实】

  1. deepin 全系域名(论坛/登录/账号/系统云服务)解析结果均为境外 IP
  2. 论坛前端有 Cloudflare,且对(至少部分)境外数据中心出口 IP 返回 403
  3. 多次完整 OAuth 流程后,论坛会话 cookie 始终未建立
  4. 改为直连后登录、发帖全部恢复正常

【合理推断】(以下推断未逐包抓包验证,但与全部实测事实自洽)

  1. 带 GEOIP 分流功能的网络工具按"目标 IP 归属地"判断走向:deepin 域名因解析到境外 IP 被误判为境外站点 → 绕行境外节点
  2. Cloudflare 对数据中心/代理出口 IP 的风控命中了登录回调等关键请求 → 回调未能完成 → 会话建立失败 → 论坛显示未登录
  3. 前端 JS 的登录弹层请求同样被 403(返回 HTML 拦截页而非 JSON)→ JS 解析失败 → 表现为"登录按钮无响应"
  4. Cloudflare 的验证 cookie(cf_clearance)与颁发时 IP 绑定,出口 IP 变化会导致已通过的验证失效——这解释了此类问题"时好时坏"的迷惑性

四、遇到同样问题的用户如何自救

如果你使用了带分流/全局代理功能的网络工具,且遇到"论坛登录成功但无登录态、登录按钮无响应":

  1. 将以下域名加入工具的直连(DIRECT)规则
    • deepin.org(论坛 / 登录 / 账号 / 系统 UTCloud 云服务)
    • deepin.com(登录链路 login.deepinid.deepin.com
    • getdeepin.org(论坛 CDN 的 CNAME 目标)
  2. 或者临时关闭该工具后完成登录
  3. 硬刷新页面(Ctrl+Shift+R);若弹出 Cloudflare 人机验证,点一下即可

顺带说明:上述域名直连后,deepin 系统更新、应用商店、账户云同步也会随之恢复直连,通常更快更稳。


五、给官方的建议

  1. 关键登录链路的 CDN 策略login/account/bbs 的 API 域名目前都在境外 IP 段,导致国内使用分流工具的用户(访问 GitHub 等属于开发者常见刚需)被系统性误判绕行。建议对国内用户做智能 DNS 分区解析,或为登录回调等关键接口提供国内直连入口。
  2. Cloudflare 拦截策略评估:建议评估对 /api/v1/login/callback 这类关键路径的拦截强度——拦截登录回调会产生"账号侧提示成功、论坛侧无登录态"的强迷惑性故障,用户几乎无法自行定位。
  3. 前端错误提示:登录态检查或登录请求失败时,目前前端无任何提示(按钮看似失灵)。建议失败时给出"网络异常,请稍后重试"类明确提示,可大幅减少此类问题的误判与重复求助。

六、环境信息

  • 系统:deepin 25(ostree 原子系统,X11 会话)
  • 浏览器:Microsoft Edge 151.0.4129.78
  • 网络:家庭宽带 + 带国内外分流功能的网络工具(工具开启时 100% 复现,改直连后恢复)
Reply Favorite View the author
All Replies

No replies yet