From 199308fab156f093da73c617af5c75f43d95ac0c Mon Sep 17 00:00:00 2001 From: fanbook-wangdage <124357765+fanbook-wangdage@users.noreply.github.com> Date: Sun, 25 Jan 2026 19:22:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E6=A1=A3=E5=B9=B6?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 112 +++++++++++++++++++++++++++++++++++++++++++++++++ routes/auth.py | 2 +- 2 files changed, 113 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a131a0..36bc14f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,114 @@ # Snap.Server Snap.Hutao新后端API + +## 部署方法 + +### 在服务器生成RSA密钥 + +执行以下代码在根目录生成密钥: +```python +from Crypto.PublicKey import RSA + +# 生成 2048 位 RSA 密钥对 +key = RSA.generate(2048) + +private_key = key.export_key() +public_key = key.publickey().export_key() + +with open("private.pem", "wb") as f: + f.write(private_key) + +with open("public.pem", "wb") as f: + f.write(public_key) + +print("Keys generated.") + +``` + +**确保客户端的公钥和生成的相同,否则将无法使用账户功能** + +### 创建配置文件 + +创建`config.json`文件,示例内容如下: + +```json +{ + "SECRET_KEY": "jwt_secret_key", + "MONGO_URI": "mongodb+srv://wdgwdg889_db_user:xxxxxx@cluster0.eplrcvl.mongodb.net/?appName=Cluster0", + "TIMEZONE": "Asia/Shanghai", + "ISTEST_MODE": false, + "SERVER": { + "HOST": "0.0.0.0", + "PORT": 5222, + "DEBUG": false + }, + "JWT": { + "ALGORITHM": "HS256", + "EXPIRATION_HOURS": 24 + }, + "EMAIL": { + "GMAIL_USER": "wdgwdg889@gmail.com", + "APP_PASSWORD": "" + }, + "RSA": { + "PRIVATE_KEY_FILE": "private.pem", + "PUBLIC_KEY_FILE": "public.pem" + }, + "LOGGING": { + "LEVEL": "DEBUG", + "FORMAT": "" + } +} +``` + +参数说明: + +| 参数 | 说明 | +|------|------| +| SECRET_KEY | 用于JWT签名的密钥,请设置为复杂字符串 | +| MONGO_URI | MongoDB连接字符串 | +| TIMEZONE | 服务器时区 | +| ISTEST_MODE | 是否启用测试模式,测试模式下部分功能将返回默认值,不连接数据库 | +| SERVER.HOST | 服务器监听地址 | +| SERVER.PORT | 服务器监听端口 | +| SERVER.DEBUG | 是否启用Flask的调试模式 | +| JWT.ALGORITHM | JWT签名算法 | +| JWT.EXPIRATION_HOURS | JWT过期时间(小时) | +| EMAIL.GMAIL_USER | 用于发送验证邮件的Gmail账号 | +| EMAIL.APP_PASSWORD | Gmail应用专用密码 | +| RSA.PRIVATE_KEY_FILE | RSA私钥文件路径 | +| RSA.PUBLIC_KEY_FILE | RSA公钥文件路径 | +| LOGGING.LEVEL | 日志记录级别,生产环境建议设置为INFO | +| LOGGING.FORMAT | 日志记录格式 | + +### 开发环境启动方法 + +确保已安装依赖: +``` +pip install -r requirements.txt +``` +运行Flask应用: +``` +python app.py +``` + +### 生产环境启动方法 + +建议使用Gunicorn部署: +``` +pip install -r requirements.txt && python -m gunicorn run:app --bind 0.0.0.0:5222 --workers 4 --threads 2 --access-logfile - --error-logfile - +``` + +请根据服务器性能调整`--workers`和`--threads`参数。 + +### API文档 + +API文档可以在该地址访问: + +https://rdgm3wrj7r.apifox.cn/ + +### 注意事项 + +在轻量使用的场景下,可以直接使用MongoDB Atlas的免费套餐,但在高并发场景下,建议使用自建MongoDB服务器以获得更好的性能和稳定性。 + +新MongoDB数据库会在写入数据时自动创建,无需手动创建数据库和集合。 diff --git a/routes/auth.py b/routes/auth.py index 2f5e165..a500ba6 100644 --- a/routes/auth.py +++ b/routes/auth.py @@ -102,7 +102,7 @@ def passport_register(): "data": { "AccessToken": access_token, "RefreshToken": access_token, - "ExpiresIn": 3600 + "ExpiresIn": config_loader.JWT_EXPIRATION_HOURS * 3600 } })