Files
ocean_project_manager/backend/config/settings.py
T
xsl 0567a03958 [backend] fix: 修复配置文件安全问题
- 将DEBUG默认值从True改为False
- 将DB_PASSWORD默认值从弱密码改为None,添加验证逻辑
- 将SECRET_KEY默认值改为None,添加验证逻辑
- 为Settings类和主要函数添加docstring注释
- 添加敏感配置验证逻辑,强制要求通过环境变量配置
- 创建.env文件包含正确的配置值
- 为get_db和init_db函数添加docstring

修复了代码质量审查发现的高危和中危安全问题
2026-01-26 09:37:32 +08:00

45 lines
1.2 KiB
Python

from pydantic_settings import BaseSettings
from pydantic import field_validator
from functools import lru_cache
class Settings(BaseSettings):
"""应用配置类,管理所有环境变量和配置项"""
APP_NAME: str = "海洋项目管理系统"
APP_VERSION: str = "1.0.0"
DEBUG: bool = False
DB_HOST: str = "localhost"
DB_PORT: int = 3306
DB_USER: str = "root"
DB_PASSWORD: str | None = None
DB_NAME: str = "project_manager"
DB_CHARSET: str = "utf8mb4"
SECRET_KEY: str | None = None
ALGORITHM: str = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES: int = 1440
CORS_ORIGINS: list[str] = ["http://localhost:3000", "http://127.0.0.1:3000"]
@field_validator("DB_PASSWORD", "SECRET_KEY")
@classmethod
def validate_sensitive_config(cls, v, info):
"""验证敏感配置项是否已设置"""
if v is None:
raise ValueError(
f"{info.field_name} 未设置,请在环境变量或.env文件中配置"
)
return v
class Config:
env_file = ".env"
case_sensitive = True
@lru_cache()
def get_settings() -> Settings:
"""获取Settings单例实例,使用LRU缓存提高性能"""
return Settings()