配置
约 3075 字大约 10 分钟
fba 配置文件位于 backend/core/conf.py ,所有应用和插件的配置都应统一放置在此文件内,包含 env 标签的配置默认为环境变量配置
环境配置
ENVIRONMENT Literal['dev', 'prod'] env
指定环境模式,当设置为 prod 时,openapi 相关在线文档将被禁止访问
FastAPI 配置
FASTAPI_API_V1_PATH str
API 版本号配置
FASTAPI_TITLE str
openapi 相关在线文档标头配置
FASTAPI_DESCRIPTION str
openapi 相关在线文档描述信息
FASTAPI_DOCS_URL str
docs 在线文档地址
FASTAPI_REDOC_URL str
redoc 在线文档地址
FASTAPI_OPENAPI_URL str
openapi JSON 数据在线地址
FASTAPI_STATIC_FILES bool
是否开启 FastAPI 静态文件服务
数据库配置
DATABASE_TYPE Literal['postgresql', 'mysql'] env
指定数据库类型,仅支持 postgresql 和 mysql,需注意第三方插件兼容性
DATABASE_HOST str env
提供数据库的主机地址
DATABASE_PORT int env
提供数据库的主机端口号
DATABASE_USER str env
连接数据库所使用的用户名
DATABASE_PASSWORD str env
连接数据库所使用的密码
DATABASE_ECHO bool | Literal['debug']
是否输出 sqlalchemy 操作日志
DATABASE_POOL_ECHO bool | Literal['debug']
是否输出 sqlalchemy 线程池操作日志
DATABASE_SCHEMA str
需要连接的数据库
DATABASE_CHARSET str
数据库字符集,仅用于 mysql
Redis 配置
REDIS_TIMEOUT int env
连接 Redis 数据库超时时长
REDIS_HOST int
连接 Redis 数据库的主机地址
REDIS_PORT str
连接 Redis 数据库的主机端口号
REDIS_PASSWORD int
连接 Redis 数据库的密码
REDIS_DATABASE str
全局默认使用的 Redis 逻辑数据库(0 - 15)
Snowflake(雪花算法)
SNOWFLAKE_DATACENTER_ID int env
雪花算法数据中心 ID
SNOWFLAKE_WORKER_ID int env
雪花算法工作机器 ID
注意
SNOWFLAKE_DATACENTER_ID 和 SNOWFLAKE_WORKER_ID 仅允许同时非 None 或同时为 None
同时非 None 时,雪花算法将应用此配置(适用于单机单进程场景)
同时为 None 时,雪花算法将自动分配此配置(适用于多线程,多进程,分布式等场景)
SNOWFLAKE_REDIS_PREFIX str
雪花算法配置存储到 Redis 时的前缀
SNOWFLAKE_HEARTBEAT_INTERVAL_SECONDS int
雪花算法配置存储到 Redis 后的心跳检测间隔时间(秒)
注意
此配置不应大于 SNOWFLAKE_NODE_TTL_SECONDS
SNOWFLAKE_NODE_TTL_SECONDS int
雪花算法配置存储到 Redis 时的生存时间(秒)
Token 配置
TOKEN_SECRET_KEY str env
token 生成和解析密钥,用于防止 token 被恶意篡改,密钥生成:secrets.token_urlsafe(32)
警告
请妥善保管此值,以免遭受恶意攻击
TOKEN_ALGORITHM str
token 加密算法
TOKEN_EXPIRE_SECONDS int
token 过期时长(秒)
TOKEN_REFRESH_EXPIRE_SECONDS int
刷新 token 过期时长(秒)
TOKEN_REDIS_PREFIX str
token 存储到 Redis 时的前缀
TOKEN_EXTRA_INFO_REDIS_PREFIX str
token 扩展信息存储到 Redis 时的前缀
TOKEN_ONLINE_REDIS_PREFIX str
token 在线状态存储到 Redis 时的前缀
TOKEN_REFRESH_REDIS_PREFIX str
刷新 token 存储到 Redis 时的前缀
TOKEN_REQUEST_PATH_EXCLUDE list[str]
JWT / RBAC 路由白名单,在此配置内的请求地址将不会校验 token 的真伪性
注意
fba 内通过 JWT 中间件解析 token 获取用户信息,并将用户信息赋值给 FastAPI request 对象,如果路由包含在此配置中, request.user 将不可用
TOKEN_REQUEST_PATH_EXCLUDE_PATTERN list[Pattern[str]]
JWT / RBAC 路由白名单正则模式,从路由头部开始匹配,与之匹配的请求地址将不会校验 token 真伪性,注意项同上
用户安全配置
USER_LOCK_REDIS_PREFIX str
用户锁定存储到 Redis 时的前缀
USER_LOCK_THRESHOLD int
用户密码错误锁定阈值,0 表示禁用锁定
USER_LOCK_SECONDS int
用户锁定时长(秒)
USER_PASSWORD_EXPIRY_DAYS int
用户密码有效期,0 表示永不过期
USER_PASSWORD_REMINDER_DAYS int
用户密码到期提醒,0 表示不提醒
USER_PASSWORD_HISTORY_CHECK_COUNT int
用户密码历史检查数量,避免重复使用历史密码
USER_PASSWORD_MIN_LENGTH int
用户密码最小长度
USER_PASSWORD_MAX_LENGTH int
用户密码最大长度
USER_PASSWORD_REQUIRE_SPECIAL_CHAR bool
用户密码需要特殊字符
登录配置
LOGIN_CAPTCHA_REDIS_PREFIX str
登录验证码存储到 Redis 时的前缀
LOGIN_CAPTCHA_EXPIRE_SECONDS int
登录验证码过期时长(秒)
LOGIN_CAPTCHA_ENABLED bool
是否开始登录验证码
LOGIN_FAILURE_PREFIX str
登录失败存储到 Redis 时的前缀
JWT 配置
JWT_USER_REDIS_PREFIX str
JWT 中间件存储用户信息到 Redis 时的前缀
RBAC 配置
RBAC_ROLE_MENU_MODE bool
是否开启 RBAC 角色菜单模式
RBAC_ROLE_MENU_EXCLUDE list[str]
开启 RBAC 角色菜单模式时,跳过 RBAC 鉴权的标识(当接口权限标识和用户菜单权限标识相同时)
Cookie 配置
COOKIE_REFRESH_TOKEN_KEY str
将刷新 token 存储到 cookie 时的键名
COOKIE_REFRESH_TOKEN_EXPIRE_SECONDS int
将刷新 token 存储到 cookie 时的过期时长(秒)
数据权限配置
DATA_PERMISSION_MODELS dict[str, str]
允许进行数据过滤的 SQLA 模型,模型值必须以模块字符串的方式定义
DATA_PERMISSION_COLUMN_EXCLUDE list[str]
排除允许进行数据过滤的 SQLA 模型列,例如 id, password 等
Socket.IO 配置
WS_NO_AUTH_MARKER str
连接 socket.io 服务时跳过用户验证的标记
警告
请妥善保管此值,以免遭受恶意攻击
CORS 配置
CORS_ALLOWED_ORIGINS list[str]
跨域请求时允许的来源,末尾不带 /,例如:http//127.0.0.1:8000
CORS_EXPOSE_HEADERS list[str]
跨域公开标头,允许将此标头添加到请求标头中
中间件配置
MIDDLEWARE_CORS bool
是否启用跨域中间件
请求限制配置
REQUEST_LIMITER_REDIS_PREFIX str
记录请求频率信息到 Redis 时的前缀
时间配置
DATETIME_TIMEZONE str
全局时区
DATETIME_FORMAT str
将时间转为时间字符串的格式
文件上传配置
注意
部分配置可能被 nginx 覆盖
UPLOAD_READ_SIZE int
上传文件时,每次读取文件内容的缓冲大小
UPLOAD_IMAGE_EXT_INCLUDE list[str]
允许上传的图片文件类型
UPLOAD_IMAGE_SIZE_MAX int
允许上传的图片文件最大尺寸
UPLOAD_VIDEO_EXT_INCLUDE list[str]
允许上传的视频文件类型
UPLOAD_VIDEO_SIZE_MAX int
允许上传的视频文件最大尺寸
演示模式配置
DEMO_MODE bool
是否开启演示模式,开启时,仅允许访问 GET 和 OPTIONS 请求
DEMO_MODE_EXCLUDE set[tuple[str, str]]
开启演示模式时,不进行请求限制的接口
IP 定位配置
IP_LOCATION_PARSE Literal['online', 'offline', 'false']
请求发起者的定位信息获取模式
IP_LOCATION_REDIS_PREFIX str
定位信息存储到 Redis 时的前缀
IP_LOCATION_EXPIRE_SECONDS int
定位信息缓存时长(秒)
Trace ID
TRACE_ID_REQUEST_HEADER_KEY str
跟踪 ID 请求头键名
TRACE_ID_LOG_LENGTH int
跟踪 ID 日志长度,必须小于等于 32
TRACE_ID_LOG_DEFAULT_VALUE str
跟踪 ID 日志默认值
日志
LOG_FORMAT str
日志内容格式(控制台和文件同享)
日志(控制台)
LOG_STD_LEVEL str
日志记录级别
日志(文件)
LOG_FILE_ACCESS_LEVEL str
访问日志记录级别
LOG_FILE_ERROR_LEVEL str
错误日志记录级别
LOG_ACCESS_FILENAME str
访问日志文件名
LOG_ERROR_FILENAME str
错误日志文件名
操作日志
OPERA_LOG_ENCRYPT_SECRET_KEY str env
操作日志加密密钥,当使用对称加密算法加密操作日志时,将十分重要,密钥生成: os.urandom(32).hex()
警告
请妥善保管此值,以免遭受恶意攻击
OPERA_LOG_PATH_EXCLUDE list[str]
操作日志路径排除,在此配置内的请求地址不会记录操作日志
OPERA_LOG_ENCRYPT_TYPE int
操作日志中的接口请求参数加密类型
- 0:AES (性能损耗)
- 1:md5
- 2:ItsDangerous
- 3:不加密
- others:直接将内容替换为 ******
OPERA_LOG_ENCRYPT_KEY_INCLUDE list[str]
加密操作日志中的接口请求参数
OPERA_LOG_QUEUE_BATCH_CONSUME_SIZE int
操作日志队列批量消费大小,达到上限后,操作日志将批量写入数据库
OPERA_LOG_QUEUE_TIMEOUT int
操作日志队列超时时长,达到上限后,操作日志将批量写入数据库
插件配置
PLUGIN_PIP_CHINA bool
通过 pip 下载插件依赖时,是否使用国内源
PLUGIN_PIP_INDEX_URL str
通过 pip 下载插件依赖时的索引地址
PLUGIN_PIP_MAX_RETRY int
pip 下载最大重试次数
PLUGIN_REDIS_PREFIX str
插件信息存储到 Redis 时的前缀
I18n 配置
I18N_DEFAULT_LANGUAGE str
国际化响应的默认语言
应用:Task
CELERY_BROKER_REDIS_DATABASE int env
Celery 代理使用的 Redis 逻辑数据库
CELERY_RABBITMQ_HOST str env
Celery 连接 RabbitMQ 服务的主机地址
CELERY_RABBITMQ_PORT int env
Celery 连接 RabbitMQ 服务的主机端口号
CELERY_RABBITMQ_USERNAME str env
Celery 连接 RabbitMQ 服务的用户名
CELERY_RABBITMQ_PASSWORD str env
Celery 连接 RabbitMQ 服务的密码
CELERY_BROKER Literal['rabbitmq', 'redis']
Celery 代理模式(开发模式默认使用 Redis,线上模式强制切换为 Rabbitmq)
CELERY_RABBITMQ_VHOST str
Celery 连接 RabbitMQ 服务的 vhost
CELERY_REDIS_PREFIX str
Celery 数据存储到 Redis 时的前缀
CELERY_TASK_MAX_RETRIES int
Celery 任务执行失败时的最大重试次数
插件:Code Generator
CODE_GENERATOR_DOWNLOAD_ZIP_FILENAME str
下载代码时的 ZIP 压缩包文件名
插件:OAuth2
OAUTH2_GITHUB_CLIENT_ID str env
GitHub 客户端 ID
OAUTH2_GITHUB_CLIENT_SECRET str env
GitHub 客户端密钥
OAUTH2_GOOGLE_CLIENT_ID str env
Google 客户端 ID
OAUTH2_GOOGLE_CLIENT_SECRET str env
Google 客户端密钥
OAUTH2_LINUX_DO_CLIENT_ID str env
Linux Do 客户端 ID
OAUTH2_LINUX_DO_CLIENT_SECRET str env
Linux Do 客户端密钥
OAUTH2_STATE_REDIS_PREFIX str
OAuth2 状态信息存储到 Redis 时的前缀
OAUTH2_STATE_EXPIRE_SECONDS str
OAuth2 状态信息存储到 Redis 时的过期时间(秒)
OAUTH2_GITHUB_REDIRECT_URI str
GitHub 重定向地址,必须与 GitHub OAuth Apps 配置保持一致
OAUTH2_GOOGLE_REDIRECT_URI str
Google 重定向地址,必须与 Google OAuth 2.0 客户端配置保持一致
OAUTH2_LINUX_DO_REDIRECT_URI str
Linux Do 重定向地址,必须与 Linux Do Connect 配置保持一致
OAUTH2_FRONTEND_LOGIN_REDIRECT_URI str
登陆成功后,重定向到前端的地址
OAUTH2_FRONTEND_BINDING_REDIRECT_URI str
绑定成功后,重定向到前端的地址
插件:Email
EMAIL_USERNAME str
电子邮箱发件用户
EMAIL_PASSWORD str
电子邮箱发件用户密码
EMAIL_HOST str
电子邮箱服务主机地址
EMAIL_PORT int
电子邮箱服务主机端口号
EMAIL_SSL bool
发送电子邮件时,是否开启 SSL
EMAIL_CAPTCHA_REDIS_PREFIX str
电子邮件验证码存储到 Redis 时的前缀
EMAIL_CAPTCHA_EXPIRE_SECONDS int
电子邮件验证码缓存时长(秒)

