全栈项目实战手记|艺培场馆课时预约小程序底层安全、交互、分包全量迭代复盘

承接第四、五、六篇业务层面 Bug 复盘,前面几篇已经完成后台业务 Bug、学员‑教师‑后台三端联动、定时任务、弱网并发、页面交互类问题复盘。本篇专门处理 迭代新增的底层安全、会话鉴权、密码兼容、数据脱敏、接口限流、小程序分包、PC 管理端 Demo 相关问题 ,业务层逻辑 Bug 不再重复赘述。 统一采用现象 → 根因分析 → 修复方案 → 开发启示结构。

一、Token 与会话生命周期相关踩坑

坑 1:Token 过期之后页面依旧保留本地登录态,不会自动跳转登录页

现象:管理员 / 子账号登录后台,Token 到达有效期;用户不主动退出,继续操作后台页面,本地依旧保存旧 Token,页面不会自动跳转到登录页,发起接口才返回鉴权失败,用户体验差。

根因:前端没有对接口返回的 401 未授权状态做统一拦截处理;没有做本地 Token 有效期校验,仅依靠后端接口返回错误之后才感知会话失效。

修复方案

  1. 请求拦截器统一捕获 401 返回码,清除本地全部登录凭证,直接跳转登录页面并给出提示;
  2. 前端本地解析 Token 内的过期时间,页面 onShow 做预校验,提前感知会话过期;
  3. 后端维护 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 加盐哈希校验逻辑,没有做旧密码的兼容适配逻辑。

修复方案

  1. 登录校验阶段,如果是旧 MD5 格式账号,先用旧算法校验密码;
  2. 密码校验通过之后,自动生成随机盐,把密码升级为加盐加密格式更新入库;
  3. 数据库增加字段标记账号密码加密版本。

开发启示:系统加密算法迭代,必须做好旧数据兼容迁移,避免存量用户无法登录。

二、细粒度权限与敏感数据脱敏踩坑

坑 4:低权限子账号,学员手机号、姓名明文直接返回,无脱敏处理

现象:配置无隐私权限的子管理员账号,进入学员列表页面,可以直接看到学员完整手机号、明文姓名,存在用户隐私泄露风险。

根因:接口没有根据账号权限码做脱敏分支;无论账号拥有何种权限,全部返回完整学员敏感字段。

修复方案

  1. 定义权限码:student:privacy(查看学员完整隐私)、booking:proxy(拥有代预约权限);
  2. 接口返回学员数据时,判断当前登录账号权限;无隐私权限则对手机号、姓名做掩码脱敏;
  3. PC 管理端、小程序后台两套接口复用同一套脱敏逻辑。

开发启示:敏感数据脱敏逻辑放在接口层,不要只在前端做掩码,防止抓包拿到明文数据。

坑 5:子账号缺少权限码校验,越权执行代预约操作

现象 :未分配booking:proxy代预约权限的子账号,依旧可以调用代预约接口,给学员创建预约记录。

根因:页面隐藏代预约按钮,但是后端接口没有校验该权限码;仅做前端按钮隐藏,接口没有鉴权拦截。

修复方案:所有受权限码控制的接口,后端鉴权中间件校验对应权限标识;无权限直接返回 403 禁止访问,前端仅做 UI 层面控制。

开发启示:细粒度权限,前端只做界面隐藏,权限校验必须放在后端接口中间件。

三、接口限流与防护踩坑

坑 6:后台业务接口没有限流,短时间高频请求容易压垮云开发环境

现象:恶意或者异常客户端短时间大量循环调用后台接口,数据库查询暴涨,云函数被大量消耗,出现整体响应变慢。

根因:V1.0 版本没有接口限流逻辑,不对单账号请求频率做限制。

修复方案:增加接口限流中间件,单账号一分钟最大请求阈值,超过阈值返回 429 请求过于频繁,拒绝多余请求。针对高危写接口进一步收紧频率。

开发启示:云开发环境资源有限,管理后台写接口一定要增加限流防护,避免资源被恶意消耗。

四、小程序分包工程化踩坑

坑 7:小程序主包体积超限,无法上传发布

现象:所有后台、学员、教师页面全部放在主包,代码包体积超出微信小程序 2MB 限制,上传代码包时报错。

根因:V1.0 没有做分包拆分,全部业务页面、组件全部打包进主包。

修复方案

  1. 进行小程序分包改造:学员端业务、管理员后台业务拆分为独立 subPackages 分包;
  2. 主包只保留首页、登录、公共基础组件;
  3. 每个分包打包体积控制在 2MB 以内,满足微信上传限制。

开发启示:业务页面多的小程序,早期就要规划分包,避免后期迭代包体积超限。

坑 8:跨分包页面跳转出现资源缺失、页面空白样式错乱

现象:从学员端分包页面跳转管理员后台分包页面,偶发页面空白、组件样式丢失、资源加载失败。

根因:分包组件引用路径错误;部分公共组件只放在某个分包,没有放到主包公共目录;跨分包跳转资源未正常加载。

修复方案

  1. 公共组件、公共样式统一放置主包;
  2. 校验分包页面路由配置,修正页面路径;
  3. 测试覆盖全部跨分包跳转场景。

开发启示:分包模式下公共资源路径很容易出错,所有跨分包访问的组件、样式统一放在主包。

坑 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 端。

开发启示:多客户端接入同一套后端,日志、鉴权逻辑在云函数层统一处理,不要区分客户端来源。

六、迭代复盘总结启示

  1. 安全鉴权不能只依赖前端:Token 会话、黑名单、权限码校验、数据脱敏全部在后端接口层实现,前端仅做交互控制。
  2. 加密算法升级一定要做好存量兼容,避免老账号无法登录使用系统。
  3. 小程序分包改造,重点关注包体积、跨分包资源引用、按需懒加载三个点,防止分包改造引入新问题。
  4. PC 管理 Demo 属于多客户端接入,业务计算、日志、鉴权全部收敛在后端,不要在客户端重复实现业务逻辑,避免逻辑分裂。
  5. 云开发环境资源有限,接口限流、黑名单、会话管控是保障系统稳定运行的底层手段。

至此,全项目所有 Bug、缺陷、风险点全部复盘完毕: 第四篇:纯后台业务 Bug;第五、六篇:三端联动、核销预约、定时任务、弱网并发交互 Bug;第七篇:V2.0 底层安全、分包、PC Demo 迭代问题。 第八篇将为 PC 管理端 Demo 完整成果展示;第九篇为项目整体全流程总结复盘。

本文属于《全栈项目实战手记|艺培场馆课时预约小程序》专栏,系列持续更新,可订阅专栏阅读完整连载。

连载目录回顾

第一篇:艺培场馆课时预约小程序 B 端管理后台完整产品设计思路

第二篇:艺培场馆课时预约小程序 C 端学员端完整产品设计思路

第三篇:艺培场馆课时预约小程序后台、教师端、学员端实拍与业务流程图汇总

第四篇:艺培场馆课时预约小程序后台开发踩坑复盘(课程、学员、权限配置类 Bug)

第五篇:艺培场馆课时预约小程序用户端 & 后台联动踩坑上篇(预约、课时、同步问题)

第六篇:艺培场馆课时预约小程序用户端 & 后台联动踩坑下篇(排课核销、定时任务、页面交互异常)

第七篇:艺培场馆课时预约小程序 V2.0 底层安全、交互、分包全量迭代复盘

第八篇:艺培场馆课时预约小程序 PC 管理端 Demo 完整开发成果展示

第九篇:艺培场馆课时预约小程序全项目开发历程完整复盘总结

相关推荐
大鹏的NLP博客4 小时前
Rust 的本质:用数学约束实现编译期内存安全
安全·rust
迪康妍妍4 小时前
终端安全实战:用迪康终端安全管理系统实现U盘四分档管控与全量审计
android·运维·网络·安全·电脑
YOLO数据集集合4 小时前
空中鸟类检测数据集 | 单目标 鸟类检测 生态监测 鸟击防范 目标检测9174期
安全·yolo·目标检测·飞鸟数据集·飞鸟
每天题库4 小时前
登高架设作业考试题库大全 核心考点真题刷题备考通关秘籍
学习·安全·考试·题库·考证
andrsted5 小时前
练题簿在线免费刷题:听读练题支持暂停续播、循环播放,让自己的题库听得更方便
学习·微信小程序·小程序·刷题·在线刷题
小蒋观天下17 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
谢亮_vipxieliang17 小时前
Kubernetes 1.36 深度解读:从 kubelet 安全到 GPU 原生调度的 70 项改进
安全·kubernetes·kubelet
YH行业报告分析18 小时前
2026衬氟调节阀市场深度解析:耐腐蚀流体控制设备如何赋能化工行业安全升级?
安全
赛博守夜人18 小时前
跨境业务与出海合规之九:海外买量投放与营销虚假流量(Ad Fraud):跨国机房群控与归因欺诈识别算法
算法·安全
loong_XL18 小时前
决策模型做内容安全检测:从踩坑到上线
数据库·安全·jev·决策模型