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

承接第四、五、六篇业务层面 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 完整开发成果展示

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

相关推荐
奶油喜多多23 分钟前
教育小程序定制开发指南:从需求梳理到上线运维
运维·小程序
2601_9499506331 分钟前
在线刷题用什么小程序?认识一下能导资料、AI出题的练题簿
人工智能·学习·小程序·刷题·小程序推荐
TunerT_TQ35 分钟前
三权分立式 Agent 架构:为什么“感知、规划、执行”必须彼此制衡?(第4期)
安全·架构·资讯
CDN3601 小时前
CDN 加速与网络安全服务解析
安全·web安全
paopaokaka_luck1 小时前
基于springboot3+vue3+uniapp的河南非遗数字图谱小程序(协同过滤算法、数字图谱展示、ECharts 图形化分析)
java·前端·spring boot·学习·小程序·uni-app·echarts
一次旅行2 小时前
2026‑08‑28 AI产业深度解读|生成视频模型迭代、AI安全全线收紧、国产大模型生态加速落地
人工智能·安全
上海广测检测科技有限公司2 小时前
路由器CRA认证详解:欧盟网络弹性法案对联网设备的安全合规要求
网络·经验分享·安全·智能路由器
OpenCloudOS11 小时前
从快速响应到问题发现:一次backport挖出全新漏洞CVE-2026-76641
服务器·网络·安全
德迅云安全-上官11 小时前
游戏攻防反套路:德迅云安全游戏盾如何破解黑产的“低成本精准打击”
网络·安全·游戏