承接第四、五、六篇业务层面 Bug 复盘,前面几篇已经完成后台业务 Bug、学员‑教师‑后台三端联动、定时任务、弱网并发、页面交互类问题复盘。本篇专门处理 迭代新增的底层安全、会话鉴权、密码兼容、数据脱敏、接口限流、小程序分包、PC 管理端 Demo 相关问题 ,业务层逻辑 Bug 不再重复赘述。 统一采用现象 → 根因分析 → 修复方案 → 开发启示结构。
一、Token 与会话生命周期相关踩坑
坑 1:Token 过期之后页面依旧保留本地登录态,不会自动跳转登录页
现象:管理员 / 子账号登录后台,Token 到达有效期;用户不主动退出,继续操作后台页面,本地依旧保存旧 Token,页面不会自动跳转到登录页,发起接口才返回鉴权失败,用户体验差。
根因:前端没有对接口返回的 401 未授权状态做统一拦截处理;没有做本地 Token 有效期校验,仅依靠后端接口返回错误之后才感知会话失效。
修复方案
- 请求拦截器统一捕获 401 返回码,清除本地全部登录凭证,直接跳转登录页面并给出提示;
- 前端本地解析 Token 内的过期时间,页面 onShow 做预校验,提前感知会话过期;
- 后端维护 Token 黑名单,过期、登出后的 Token 加入黑名单,即使伪造携带也直接拦截。
开发启示:会话失效不能只靠后端接口返回,前端全局拦截器要统一处理鉴权失败,黑名单机制防止旧凭证被重复使用。
坑 2:用户执行登出操作,旧 Token 依旧可以调用后台接口
现象:账号正常点击退出登录,前端清除本地 token;但是把登出前的 Token 复制出来,依旧可以调用后台业务接口执行操作。
根因:登出动作仅仅清除前端存储,后端没有将该 Token 加入黑名单,接口鉴权仍然认为该 Token 有效。
修复方案:用户登出时后端把当前 Token 写入黑名单集合;所有后台接口鉴权阶段校验黑名单,黑名单内的 Token 直接返回 401 拒绝访问。设置黑名单过期时间与 Token 生命周期对齐。
开发启示:服务端会话管控不能完全依赖前端清除凭证,后端黑名单是强制兜底。
坑 3:V1.0 旧版本 MD5 密码账号无法兼容 V2.0 加盐密码体系
现象:升级 V2.0 加盐加密之后,V1.0 遗留纯 MD5 加密的老账号登录失败,无法正常登录后台。
根因:V2.0 全部使用 salt 加盐哈希校验逻辑,没有做旧密码的兼容适配逻辑。
修复方案
- 登录校验阶段,如果是旧 MD5 格式账号,先用旧算法校验密码;
- 密码校验通过之后,自动生成随机盐,把密码升级为加盐加密格式更新入库;
- 数据库增加字段标记账号密码加密版本。
开发启示:系统加密算法迭代,必须做好旧数据兼容迁移,避免存量用户无法登录。
二、细粒度权限与敏感数据脱敏踩坑
坑 4:低权限子账号,学员手机号、姓名明文直接返回,无脱敏处理
现象:配置无隐私权限的子管理员账号,进入学员列表页面,可以直接看到学员完整手机号、明文姓名,存在用户隐私泄露风险。
根因:接口没有根据账号权限码做脱敏分支;无论账号拥有何种权限,全部返回完整学员敏感字段。
修复方案
- 定义权限码:
student:privacy(查看学员完整隐私)、booking:proxy(拥有代预约权限); - 接口返回学员数据时,判断当前登录账号权限;无隐私权限则对手机号、姓名做掩码脱敏;
- PC 管理端、小程序后台两套接口复用同一套脱敏逻辑。
开发启示:敏感数据脱敏逻辑放在接口层,不要只在前端做掩码,防止抓包拿到明文数据。
坑 5:子账号缺少权限码校验,越权执行代预约操作
现象 :未分配booking:proxy代预约权限的子账号,依旧可以调用代预约接口,给学员创建预约记录。
根因:页面隐藏代预约按钮,但是后端接口没有校验该权限码;仅做前端按钮隐藏,接口没有鉴权拦截。
修复方案:所有受权限码控制的接口,后端鉴权中间件校验对应权限标识;无权限直接返回 403 禁止访问,前端仅做 UI 层面控制。
开发启示:细粒度权限,前端只做界面隐藏,权限校验必须放在后端接口中间件。
三、接口限流与防护踩坑
坑 6:后台业务接口没有限流,短时间高频请求容易压垮云开发环境
现象:恶意或者异常客户端短时间大量循环调用后台接口,数据库查询暴涨,云函数被大量消耗,出现整体响应变慢。
根因:V1.0 版本没有接口限流逻辑,不对单账号请求频率做限制。
修复方案:增加接口限流中间件,单账号一分钟最大请求阈值,超过阈值返回 429 请求过于频繁,拒绝多余请求。针对高危写接口进一步收紧频率。
开发启示:云开发环境资源有限,管理后台写接口一定要增加限流防护,避免资源被恶意消耗。
四、小程序分包工程化踩坑
坑 7:小程序主包体积超限,无法上传发布
现象:所有后台、学员、教师页面全部放在主包,代码包体积超出微信小程序 2MB 限制,上传代码包时报错。
根因:V1.0 没有做分包拆分,全部业务页面、组件全部打包进主包。
修复方案
- 进行小程序分包改造:学员端业务、管理员后台业务拆分为独立 subPackages 分包;
- 主包只保留首页、登录、公共基础组件;
- 每个分包打包体积控制在 2MB 以内,满足微信上传限制。
开发启示:业务页面多的小程序,早期就要规划分包,避免后期迭代包体积超限。
坑 8:跨分包页面跳转出现资源缺失、页面空白样式错乱
现象:从学员端分包页面跳转管理员后台分包页面,偶发页面空白、组件样式丢失、资源加载失败。
根因:分包组件引用路径错误;部分公共组件只放在某个分包,没有放到主包公共目录;跨分包跳转资源未正常加载。
修复方案
- 公共组件、公共样式统一放置主包;
- 校验分包页面路由配置,修正页面路径;
- 测试覆盖全部跨分包跳转场景。
开发启示:分包模式下公共资源路径很容易出错,所有跨分包访问的组件、样式统一放在主包。
坑 9:分包没有按需懒加载,小程序启动加载全部分包资源,首屏加载缓慢
现象:小程序打开首页,就加载全部分包资源,首页打开速度慢。
根因:错误配置分包,把分包页面配置进主包,或者配置预加载策略不合理。
修复方案:保证 subPackages 分包为按需加载;仅进入分包页面的时候才加载分包资源;合理配置 preloadRule 预加载规则。
开发启示:分包的核心收益就是按需加载,错误配置会完全失去分包优化效果。
五、PC 管理端 Demo 专项踩坑
坑 10:PC 端 Mock 离线模式部分字段和线上云函数返回数据不一致
现象:PC 管理端开启 Mock 离线演示模式,部分业务字段、计算结果和真实云开发环境返回结果存在细微差异,用于演示容易产生误解。
根因:Mock 模拟数据硬编码写死,没有复用业务计算逻辑,Mock 与真实业务逻辑两套实现。
修复方案:Mock 模式尽量复用同样的业务计算函数,仅替换数据源;关键业务输出保证 Mock 与线上逻辑完全对齐。
开发启示:Mock 演示模式不要复制一份业务逻辑,尽量复用公共业务函数,避免模拟数据和真实业务结果脱节。
坑 11:PC 端与小程序后台相同业务,课时计算逻辑不一致
现象:PC 管理端执行手动核销,学员课时扣减数值,和小程序管理员后台执行相同操作结果不一致。
根因:PC 端 Demo 独立实现一套课时计算扣减逻辑,没有复用云函数公共业务逻辑。
修复方案:PC 端所有写操作全部调用云端云函数,由云函数统一执行业务计算;Mock 模式复用同一套计算工具函数,保证两端结果完全一致。
开发启示:多端管理端(小程序后台 + PC 后台),业务计算全部收敛到后端云函数,客户端只做展示,不在客户端执行业务计算。
坑 12:PC 端操作业务,审计操作日志没有正常写入
现象:在 PC 管理端执行代预约、修改排班、撤销核销等操作,后台审计日志表没有生成对应操作记录。
根因:PC 端业务分支调用云函数时,没有带入操作者身份信息,没有触发统一日志写入工具。
修复方案:PC 端所有业务请求携带操作者身份标识;云函数层统一处理操作日志写入,不区分请求来源是小程序还是 PC 端。
开发启示:多客户端接入同一套后端,日志、鉴权逻辑在云函数层统一处理,不要区分客户端来源。
六、迭代复盘总结启示
- 安全鉴权不能只依赖前端:Token 会话、黑名单、权限码校验、数据脱敏全部在后端接口层实现,前端仅做交互控制。
- 加密算法升级一定要做好存量兼容,避免老账号无法登录使用系统。
- 小程序分包改造,重点关注包体积、跨分包资源引用、按需懒加载三个点,防止分包改造引入新问题。
- PC 管理 Demo 属于多客户端接入,业务计算、日志、鉴权全部收敛在后端,不要在客户端重复实现业务逻辑,避免逻辑分裂。
- 云开发环境资源有限,接口限流、黑名单、会话管控是保障系统稳定运行的底层手段。
至此,全项目所有 Bug、缺陷、风险点全部复盘完毕: 第四篇:纯后台业务 Bug;第五、六篇:三端联动、核销预约、定时任务、弱网并发交互 Bug;第七篇:V2.0 底层安全、分包、PC Demo 迭代问题。 第八篇将为 PC 管理端 Demo 完整成果展示;第九篇为项目整体全流程总结复盘。
本文属于《全栈项目实战手记|艺培场馆课时预约小程序》专栏,系列持续更新,可订阅专栏阅读完整连载。
连载目录回顾
第一篇:艺培场馆课时预约小程序 B 端管理后台完整产品设计思路
第二篇:艺培场馆课时预约小程序 C 端学员端完整产品设计思路
第三篇:艺培场馆课时预约小程序后台、教师端、学员端实拍与业务流程图汇总
第四篇:艺培场馆课时预约小程序后台开发踩坑复盘(课程、学员、权限配置类 Bug)
第五篇:艺培场馆课时预约小程序用户端 & 后台联动踩坑上篇(预约、课时、同步问题)
第六篇:艺培场馆课时预约小程序用户端 & 后台联动踩坑下篇(排课核销、定时任务、页面交互异常)
第七篇:艺培场馆课时预约小程序 V2.0 底层安全、交互、分包全量迭代复盘
第八篇:艺培场馆课时预约小程序 PC 管理端 Demo 完整开发成果展示
第九篇:艺培场馆课时预约小程序全项目开发历程完整复盘总结