Files
hera-web/docs/tiangong-login-access.md
T

47 lines
5.8 KiB
Markdown
Raw Normal View History

# 天宫登录访问限制
## 行为
- 真实模式没有登录 token:点击中间天宫入口直接发起微信登录,不切换到神仙内容、不堆叠重复登录。首页、我的与天宫直达路由共用同一套登录提示卡片。
- 直接打开天宫或敬神/请神详情页:没有权限时只显示登录提示和返回首页入口,不挂载神仙列表、神像场景或业务弹窗。直接进入不强制反复跳转,避免用户按返回键陷入循环。
- 有 token:同一 token 的资料缓存仍在 30 秒有效期内时直接挂载内容,不先切为 checking,不重复请求资料;没有有效缓存才通过共享资料接口确认。401 清除登录后隐藏内容;网络错误显示重试,不当成登录成功,也不随意删除仍有效的 token。
- 页面隐藏不再重置可复用的已验证状态;重新显示时检查有效期。隐藏或卸载后的旧异步结果不恢复页面权限,切换账号不能沿用另一个 token 的 allowed 状态。注册未完成、仅取得微信临时会话而尚无登录 token,也不能进入天宫。
- 必要的异步校验使用天宫轻量场景占位和可用的返回入口,不显示“正在确认登录状态”的整页卡片,不提前挂载神仙资料或业务按钮。
- 现有 `preview=1` 和 `avatarDemo=1` 仅在 H5 的明确演示环境保留访问,仍沿用隔离 Mock,不创建真实身份、不调用真实天宫写接口;微信端不启用这些查询参数。
- 登录/注册成功后的落点继续沿用我的/完善资料页,没有增加未约定的返回天宫逻辑。用户随后点击天宫即可进入。
## 接口边界
不新增 REST 接口。复用已存在且需要 Bearer token 的 GET `/api/user/profile` 校验,基址按部署配置默认使用 `http://101.43.139.56/hera`。本次没有把天宫 Mock 接口改成真实后端,也不以界面守卫代替服务端鉴权。
## 验收
1. 在微信开发者工具以未登录状态进入首页或我的,点击登录/注册或天宫入口:直接调用微信登录;不能看到任何神仙,连续点击不重复发起登录。
2. 未登录直达 `pages/fortune/index` 或 `pages/tiangong-detail/index?id=wealth`:只出现登录提示,不能操作恭请、上香、祈愿或其他业务按钮。
3. 正常完成登录/注册,重新点击天宫:资料校验通过后可进入;首页、我的的导航不受影响。
4. 登录过期返回 401 后:天宫和详情内容隐藏,重新登录后恢复。断网导致校验失败:显示重新加载和返回首页,不展示旧内容。
5. H5 普通地址不带演示参数时执行同样拦截;H5 点击登录只提示在微信环境完成,不伪造 code、不再打开“祈运”品牌中间页。明确的演示 URL 保留原型预览。
自动测试覆盖导航拦截、重复点击、登录失败重试、无 token 不请求资料、真实会话校验、401、网络错误、隐藏/卸载后的异步失效,以及直达页面不挂载业务内容。
## 本次验证
- 全量前端测试 83 项通过,TypeScript 检查、H5 构建、微信小程序构建通过;13 个 WXSS 文件通过微信原生编译器检查。
- 浏览器实测:未登录首页和我的显示相同卡片,H5 登录入口不再跳品牌页;冷启动天宫列表和详情路由仅展示登录提示;独立头像演示模式仍展示隔离 Mock。
- 小屏视口下检查统一登录提示、操作按钮与底部导航,无遮挡。截图保存在 `/private/tmp/hera-unified-login.png`。
- 未在浏览器伪造微信登录,也未验证真实微信授权流程;有效会话和过期会话分支由自动测试覆盖。本次未修改后端、未提交或推送代码。
## 锁定页与精简登录流程
- 未绑定任意神仙时,首页和我的元素报告使用固定高度的锁定首屏,裁切长报告并拦截触摸滚动。绑定弹窗、返回、底部导航仍可操作;绑定后移除限制,恢复报告滚动。
- 微信入口直接执行 `wx.login` 和 POST `/api/auth/wx-login`。已注册的响应直接沿用原有登录成功落点;未绑定手机号的响应仅把临时会话保留在内存,再进入必要的手机号表单,不放入 URL 或持久存储。
- 手机号验证仍使用 POST `/api/auth/sms` 与 POST `/api/auth/bind-phone`。品牌名称、“一触即吉”和二次微信登录点击已从正常入口流程移除,不绕过后端注册和手机号验证。
- 微信开发者工具验收:未绑定时在首页和“我的→我的元素”上下滑动,页面不位移;点击绑定/取消仍有效,绑定一个神仙后可正常滚动。分别从三个入口登录,已注册用户不再看到品牌中间页,新用户才显示手机号与验证码表单。
- 浏览器已用隔离 Mock 验证解绑→锁定→绑定→恢复滚动;没有操作真实绑定或真实短信。截图:`/private/tmp/hera-locked-home.png`、`/private/tmp/hera-unified-login.png`。
## 详情页无登录检查闪屏
- 微信开发者工具登录后进入天宫,再点财神详情、返回、再次进入:资料缓存有效时应直接看到详情,不出现登录检查页。
- 超过资料缓存有效期、冷启动只有 token 时,仍先校验,使用轻量占位;401 应显示登录入口,断网应显示重试,不能展示未验证的内容。
- 自动测试覆盖有效缓存首帧允许且不发请求、隐藏/返回不闪检查态、缓存过期必须重新验证、切换账号/退出不能复用旧状态、轻量占位不渲染登录检查卡片。
- 浏览器已验证隔离 Mock 中详情进入和返回,以及真实未登录直达详情仍被拦截;未伪造登录凭证。真实会话缓存/延迟分支通过自动测试验证,仍需微信端实际网络环境验收。截图:`/private/tmp/hera-tiangong-smooth-detail.png`。