第12组 · 曾大君 · 第1次评审详情 - sebestp/coursewise GitHub Wiki
- 报告期次:第1次 | 报告日期:2026-10-08 | 项目组号:第12组 | 项目名称:在线购物系统
- 已完成工作:上传05模块四个源码文件与统一启动入口,六组集成测试通过
- 成果物:提交与源码
卖家账号与系统集成成果
负责人:曾大君;GitHub账号:Sisyphu-s。负责05模块的卖家账号、共享数据库、统一HTTP服务入口与系统集成测试。
四个源码文件已合入 main(提交 cbc14b3,作者 Sisyphu-s)。此前页面把提交来源记为 PR #1,经 GitHub API 查询该编号在本仓库不存在(/pulls/1 返回 404),已按可核验的提交号更正。
| 文件 | 职责 |
|---|---|
database.py |
数据表初始化、数据库连接与事务、约束及公开商品字段输出 |
security.py |
固定卖家账号登录、退出、密码修改及会话验证 |
server.py |
统一HTTP入口、前端静态文件、JSON请求校验与各业务模块路由挂载 |
test_system.py |
使用独立临时数据库进行系统集成测试 |
代码已上传,系统运行与测试结果待验证;源码上传不等于功能验收通过。本页补充模块说明,不宣称个人任务或系统已100%验收完成。
| 函数 | 作用 |
|---|---|
connection(write=False) |
创建SQLite连接,启用外键;写事务使用 BEGIN IMMEDIATE,成功提交、异常回滚并关闭连接 |
initialize(password_hash) |
创建数据库目录、启用WAL、初始化表和固定卖家账号;已有账号不会被重复初始化覆盖 |
public_product(row) |
按白名单输出商品公开字段,空记录返回 None,不暴露选中意向编号 |
数据表包括 seller、sessions、products、intents 和 trade_events。唯一索引限制同时最多一件 active 或 frozen 商品;UNIQUE(product_id, contact) 限制同商品同规范化电话重复提交意向。02、03、04模块通过共享连接执行各自业务SQL。
- 固定单一卖家账号,无用户注册。
-
hash_password()使用随机盐及PBKDF2-HMAC-SHA256(260000次迭代)存储密码哈希;verify_password()使用恒定时间比较校验哈希。 - 登录生成随机会话令牌,数据库保存令牌的SHA256哈希和过期时间;会话有效期8小时。
- Cookie设置
HttpOnly、SameSite=Strict和Path=/;logged_in()检查会话,require_seller()对未登录请求返回401。 - 退出删除当前会话并清除Cookie。修改密码验证原密码,新密码为8–128字符且不能与旧密码相同;成功后删除全部会话并要求重新登录。
| 方法 | 路径 | 登录要求 | 功能 |
|---|---|---|---|
| GET | /api/account |
无需登录 | 返回 logged_in/username
|
| POST | /api/login |
无需登录 | 校验 username/password,创建会话并设置Cookie |
| POST | /api/logout |
会话可选 | 删除当前会话并清除Cookie |
| POST | /api/password |
需卖家登录 | 校验 old_password/new_password,修改密码并使旧会话失效 |
server.py 把02、03、04模块目录加入导入路径,合并 buyer.ROUTES、products.ROUTES、trades.ROUTES 和 security.ROUTES。前端静态文件从 01_前端界面 读取,前后端由同源服务提供。
-
Handler.text()校验文本类型和长度;Handler.integer()校验正整数。 -
Handler.dispatch()分发API和静态文件,处理错误并返回JSON错误信息。 - POST要求
Content-Type: application/json、X-Requested-With: ShopApp;存在Origin时检查同源,JSON须为对象,请求体上限3MB。 -
Handler.respond()输出响应及内容类型、缓存控制和安全响应头。 -
main()初始化数据库并启动HTTP服务,默认监听127.0.0.1:8000。
(评审后填写)