1. 项目概述:单机版购物商城的设计理念
这个完全基于SQLite的单机购物商城项目,在当下各种"云原生"、"分布式"系统大行其道的环境中显得尤为特别。它采用经典的MVC架构,所有业务逻辑和数据处理都在本地完成,特别适合需要数据隐私保护或网络不稳定场景下的使用需求。
我拆解的这个版本实现了完整的用户系统、商品管理和订单流程,整个项目只有一个不到10MB的SQLite数据库文件,却支撑起了所有核心功能。这种轻量级解决方案对于个人开发者、教学演示或是需要快速验证商业模式的小团队来说,都是极具参考价值的实践案例。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 用户系统架构解析
2.1 数据表设计精要
用户系统的核心是users表的设计,这个项目采用了以下字段结构:
sql复制CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL,
email TEXT UNIQUE,
phone TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_login TIMESTAMP,
status INTEGER DEFAULT 1
);
几个关键设计点值得注意:
- 密码存储采用salt+hash方式,实测使用PBKDF2算法迭代10000次
- 为username和email添加了UNIQUE约束,避免重复注册
- status字段用整型表示账户状态(1-正常 0-冻结)
- 时间戳记录精确到秒,便于后续行为分析
2.2 注册登录实现细节
注册流程包含三个关键步骤:
- 前端进行基础校验(密码强度、邮箱格式等)
- 服务端生成随机salt(本项目使用32字节长度)
- 对"密码+salt"进行多次哈希迭代
核心的Python实现示例:
python复制def register_user(username, password, email):
salt = os.urandom(32)
key = hashlib.pbkdf2_hmac(
'sha256',
password.encode('utf-8'),
salt,
10000
)
db.execute(
"INSERT INTO users (username, password_hash, salt, email) VALUES (?, ?, ?, ?)",
(username, key.hex(), salt.hex(), email)
)
db.commit()
登录验证时,会先查询用户的salt值,然
