Files
DjangoAdmin DevandClaude 15f2a5e097 chore: 基线提交(重构前代码快照)
- git 初始化 + .gitignore 补全(根 .env / logs / instance / __pycache__ 等)
- 修复 utils/.gitignore 误将整个 utils/ 源码层忽略的问题,补入全部工具源码(含 ip2region.xdb)
- 含后端全部代码:application / extensions / utils / config / migrations
- 含前端 ui/(后续整体迁走)
- 不含根 .env(含密钥,本地保留)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 12:12:06 +08:00

55 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
验证码配置模块
=============================================================
从环境变量读取验证码相关配置,支持字符集、长度、过期时间、防刷机制等自定义。
所有配置项均可在 .env 文件中调整,无需修改代码。
依赖:config/__init__.py 中的 _load_env_file() 已提前加载 .env
"""
import os
# ============================================================
# 验证码基础配置
# ============================================================
# 验证码字符长度(4-6位,推荐4位)
# 4位:输入便捷,适合普通场景
# 6位:安全性较高,适合敏感操作
CAPTCHA_LENGTH = int(os.getenv('CAPTCHA_LENGTH', 4))
# 验证码过期时间(秒),默认5分钟
# 过期后验证码自动失效,需重新获取
CAPTCHA_EXPIRE = int(os.getenv('CAPTCHA_EXPIRE', 300))
# 验证码防刷窗口期(秒),默认60秒
# 在此时间窗口内,同一IP获取验证码次数受 CAPTCHA_RATE_LIMIT 限制
CAPTCHA_RATE_WINDOW = int(os.getenv('CAPTCHA_RATE_WINDOW', 60))
# 验证码防刷上限(窗口期内最大获取次数),默认10次
# 超过此次数后需等待窗口期结束才能再次获取
CAPTCHA_RATE_LIMIT = int(os.getenv('CAPTCHA_RATE_LIMIT', 10))
# 验证码字符集(去除易混淆字符:0/O/1/I/l/5/S/2/Z)
# 仅保留清晰易辨的字母和数字,提高用户输入正确率
CAPTCHA_CHARS = os.getenv('CAPTCHA_CHARS', 'ABCDEFGHJKLMNPQRSTUVWXYZ2346789')
# 验证码字体路径(相对于项目根目录)
CAPTCHA_FONT_PATH = os.getenv('CAPTCHA_FONT_PATH', 'static/fonts/Vera.ttf')
# 验证码图片宽度(像素)
CAPTCHA_IMAGE_WIDTH = int(os.getenv('CAPTCHA_IMAGE_WIDTH', 160))
# 验证码图片高度(像素)
CAPTCHA_IMAGE_HEIGHT = int(os.getenv('CAPTCHA_IMAGE_HEIGHT', 50))
# 验证码字体大小(像素)
CAPTCHA_FONT_SIZE = int(os.getenv('CAPTCHA_FONT_SIZE', 28))
# 干扰线数量
CAPTCHA_NOISE_LINES = int(os.getenv('CAPTCHA_NOISE_LINES', 6))
# 噪点数量
CAPTCHA_NOISE_DOTS = int(os.getenv('CAPTCHA_NOISE_DOTS', 30))