登录与权限:会话、角色和操作审计|学员任务书

课前预习 · 课堂课件 · 课后复习

任务与起点

沿本人累计商城项目继续,先保留可运行提交。本日交付:受保护订单 API、角色矩阵及拒绝后状态记录。领取当天 student/W03-D03/;README 和显式 TODO 是练习起点,不是另一份完整商城。新增机制先完成最小例,再接本人业务模块。老师提供输入合同、检查工具与框架支架;刻意不提供业务实现和个人变体答案。

输入输出与合同

金额保持 Decimal 和 API 两位小数字符串;原订单状态、公共字段和权限合同不变。只能操作自己的实验数据。线程、进程或缓存不得绕开数据库事务和服务端权限。运行入口:python -m pytest test_exercise.py -q。首次红灯应来自 NotImplementedError/STUDENT_TODO;依赖错误和路径错误先修,不能记作业务红灯。

分段任务

  1. 读角色矩阵,先写 viewer/support/admin 与未知角色、未知动作的预期。
  2. 完成日包 may_write,运行参数化测试;小函数通过后接本人后端入口,身份来自可信会话。
  3. 沿真实 authorize 调用链标出装饰器注册、异常转换、await 和 finally 清理。
  4. 验证未登录、越权、缺 CSRF、注销后重放、会话故障;每次拒绝核对订单未变。
  5. 合法取消或改价核对业务审计;个人变化增加未知动作拒绝测试,不修改公共角色合同。

验收与独立解释

角色规则测试;401/403/503;CSRF;旧 Cookie 注销失效;拒绝无状态变化,成功审计同事务。对每项保留输入、预测、实际、修复与复验;至少一条正常、一条错误、一条边界。AI 只改允许文件,先保存起点、检查 diff,再解释一处接受或拒绝的建议。同伴只按说明运行,不由作者代敲。

学生提交本人累计代码、固定提交、命令、测试结果和个人变化。课堂机制、本机 HTTP 替身、真实 MySQL/Redis、浏览器、本人完成分别标注;未运行写待验证。只交机制小函数或教师演示截图,不能替代累计商城增量。

分层与下一日

核心完成当天分段任务与独立变化;进阶更换同规模输入或故障;复杂分布式锁、集群与完整 Outbox 不纳入必修,也不挤占个人操作。下一日:同一套身份与错误合同接浏览器,复用请求支架。