Skip to content

数据库模型与数据持久化

userdata.py 规定了数据在磁盘上的组织形式。它通过“用户 -> 计算记录 -> 详细结果”的三层级联架构,既保证了账号管理的安全性,又兼顾了科研数据(Params)的高柔性与仿真矩阵(Matrices)的读写性能。


系统采用典型的 One-to-ManyOne-to-One 混合关联模式。

负责存储身份验证元数据与科研人员档案。

  • 哈希保护:基于 werkzeug 的 PBKDF2 算法,严禁明文存储密码。
  • 级联删除:配置了 cascade="all, delete-orphan"。当用户被注销时,系统会自动清理其名下数 GB 的仿真数据,防止磁盘垃圾堆积。

def set_password(self, password):
"""
@description 将明文密码转换为盐值哈希
生成的哈希值包含算法、迭代次数、盐和哈希结果,长度上限 512 位。
"""
self.password_hash = generate_password_hash(password)
def check_password(self, password):
"""执行恒定时间比较,防止计时攻击 (Timing Attack)"""
return check_password_hash(self.password_hash, password)