feat: refine email verification login flow

This commit is contained in:
2026-08-04 18:24:05 +08:00
parent 732c1df031
commit 87c792db44
7 changed files with 323 additions and 80 deletions
+14 -15
View File
@@ -1,48 +1,47 @@
# 环境变量模板:复制为 .env 后填写实际值。不要提交 .env 或 .env.local。
# 优先级:系统环境变量 > .env.local > .env。
# 配置优先级:系统环境变量 > .env.local > .env。
# ==================== 运行模式 ====================
# APP_ENVproduction(生产)/ development(开发)。
# DEBUG:是否开启 Flask 调试与热重载;生产必须为 false。
APP_ENV=production
# 是否开启 Flask 调试与热重载。生产必须为 false。
DEBUG=false
# ==================== 会话与基础安全 ====================
# SECRET_KEY会话加密密钥。执行 python -c "import secrets; print(secrets.token_hex(32))" 生成。
# SECRET_KEY:执行 python -c "import secrets; print(secrets.token_hex(32))" 生成。
SECRET_KEY=replace-with-a-long-random-secret
# ==================== 管理员初始化 ====================
# 首次启动时创建管理员;之后不会用这些值覆盖管理员密码。
ADMIN_USERNAME=admin
ADMIN_PASSWORD=replace-with-a-strong-password
ADMIN_EMAIL=admin@waternetwork.cn
ADMIN_EMAIL=
# ==================== 数据与文件 ====================
# DATABASE_URL数据库连接。默认使用项目 data 目录中的 SQLite 文件。
# DATABASE_URLDocker 环境下使用 /app/data 中的 SQLite 文件。
DATABASE_URL=sqlite:////app/data/pipe_survival.db
# 页面展示的时区。
# APP_TIMEZONE:页面与导出文件显示时间使用的时区。
APP_TIMEZONE=Asia/Shanghai
# 单个上传文件最大字节数,16 MiB = 16777216。
# MAX_UPLOAD_BYTES:单次上传文件最大字节数,16 MiB = 16777216。
MAX_UPLOAD_BYTES=16777216
# 模型核心目录。
# FUSION_MODEL_CORE_DIRDocker 中的模型核心目录。
FUSION_MODEL_CORE_DIR=/app/model_core
# ==================== 注册与邮件服务 ====================
# ALLOW_REGISTRATION:是否允许公开自助注册。
ALLOW_REGISTRATION=false
# Resend 邮件服务。发件地址必须已在 Resend 验证。
# Resend 邮件服务:发件地址必须已在 Resend 验证。
RESEND_API_KEY=re_xxxxxxxxx
RESEND_FROM_EMAIL=no-reply@waternetwork.cn
# ==================== 登录认证与会话期限 ====================
# 邮件验证码:有效期(分钟)、重发间隔(秒)最大尝试次数。
# 邮件验证码:有效期(分钟)、重发间隔(秒)最大尝试次数。
EMAIL_CODE_MINUTES=10
EMAIL_CODE_RESEND_SECONDS=60
EMAIL_CODE_MAX_ATTEMPTS=5
# 邮箱验证码通过后,用于改密和找回密码的短时授权(分钟)。
# FRESH_AUTH_MINUTES:改密、重置密码等敏感操作的短时授权有效期(分钟)。
FRESH_AUTH_MINUTES=5
# 受信设备有效期(天)。
# TRUSTED_DEVICE_DAYS受信设备有效期(天)。
TRUSTED_DEVICE_DAYS=30
# SESSION_COOKIE_SECUREHTTPS 下必须为 true;本地 HTTP 开发环境设为 false。
SESSION_COOKIE_SECURE=true