151 lines
4.9 KiB
Python
Raw 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.

# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2021/10/19 15:47
# @File : settings.py
# @IDE : PyCharm
# @desc : 主配置文件
import os
from fastapi.security import OAuth2PasswordBearer
"""
系统版本
"""
VERSION = "3.10.1"
"""安全警告: 不要在生产中打开调试运行!"""
DEBUG = True
"""是否开启演示功能取消所有POST,DELETE,PUT操作权限"""
DEMO = False
"""演示功能白名单"""
DEMO_WHITE_LIST_PATH = [
"/auth/login",
"/auth/token/refresh",
"/auth/wx/login",
"/vadmin/system/dict/types/details",
"/vadmin/system/settings/tabs",
"/vadmin/resource/images",
"/vadmin/auth/user/export/query/list/to/excel"
]
"""演示功能黑名单(触发异常 status_code=403黑名单优先级更高"""
DEMO_BLACK_LIST_PATH = [
"/auth/api/login"
]
"""
引入数据库配置
"""
if DEBUG:
from application.config.development import *
else:
from application.config.production import *
"""项目根目录"""
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
"""
是否开启登录认证
只适用于简单的接口
如果是与认证关联性比较强的接口,则无法使用
"""
OAUTH_ENABLE = True
"""
配置 OAuth2 密码流认证方式
官方文档https://fastapi.tiangolo.com/zh/tutorial/security/first-steps/#fastapi-oauth2passwordbearer
auto_error:(bool) 可选参数,默认为 True。当验证失败时如果设置为 TrueFastAPI 将自动返回一个 401 未授权的响应,如果设置为 False你需要自己处理身份验证失败的情况。
这里的 auto_error 设置为 False 是因为存在 OpenAuth开放认证无认证也可以访问
如果设置为 True那么 FastAPI 会自动报错,即无认证时 OpenAuth 会失效,所以不能使用 True。
"""
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/api/login", auto_error=False) if OAUTH_ENABLE else lambda: ""
"""安全的随机密钥,该密钥将用于对 JWT 令牌进行签名"""
SECRET_KEY = 'vgb0tnl9d58+6n-6h-ea&u^1#s0ccp!794=kbvqacjq75vzps$'
"""用于设定 JWT 令牌签名算法"""
ALGORITHM = "HS256"
"""access_token 过期时间,一天"""
ACCESS_TOKEN_EXPIRE_MINUTES = 1440
"""refresh_token 过期时间用于刷新token使用两天"""
REFRESH_TOKEN_EXPIRE_MINUTES = 1440 * 2
"""access_token 缓存时间用于刷新token使用30分钟"""
ACCESS_TOKEN_CACHE_MINUTES = 30
"""
挂载临时文件目录,并添加路由访问,此路由不会在接口文档中显示
TEMP_DIR临时文件目录绝对路径
官方文档https://fastapi.tiangolo.com/tutorial/static-files/
"""
TEMP_DIR = os.path.join(BASE_DIR, "temp")
"""
挂载静态目录,并添加路由访问,此路由不会在接口文档中显示
STATIC_ENABLE是否启用静态目录访问
STATIC_URL路由访问
STATIC_ROOT静态文件目录绝对路径
官方文档https://fastapi.tiangolo.com/tutorial/static-files/
"""
STATIC_ENABLE = False
STATIC_URL = "/media"
STATIC_DIR = "static"
STATIC_ROOT = os.path.join(BASE_DIR, STATIC_DIR)
"""
跨域解决
详细解释https://cloud.tencent.com/developer/article/1886114
官方文档https://fastapi.tiangolo.com/tutorial/cors/
"""
# 是否启用跨域
CORS_ORIGIN_ENABLE = True
# 只允许访问的域名列表,* 代表所有
ALLOW_ORIGINS = ["*"]
# 是否支持携带 cookie
ALLOW_CREDENTIALS = True
# 设置允许跨域的http方法比如 get、post、put等。
ALLOW_METHODS = ["*"]
# 允许携带的headers可以用来鉴别来源等作用。
ALLOW_HEADERS = ["*"]
"""
全局事件配置
"""
EVENTS = [
"core.event.connect_mongo" if MONGO_DB_ENABLE else None,
"core.event.connect_redis" if REDIS_DB_ENABLE else None,
]
"""
其他项目配置
"""
# 默认密码,"0" 默认为手机号后六位
DEFAULT_PASSWORD = "0"
# 默认头像
DEFAULT_AVATAR = "https://vv-reserve.oss-cn-hangzhou.aliyuncs.com/avatar/2023-01-27/1674820804e81e7631.png"
# 默认登陆时最大输入密码或验证码错误次数
DEFAULT_AUTH_ERROR_MAX_NUMBER = 5
# 是否开启保存登录日志
LOGIN_LOG_RECORD = True
# 是否开启保存每次请求日志到本地
REQUEST_LOG_RECORD = True
# 是否开启每次操作日志记录到MongoDB数据库
OPERATION_LOG_RECORD = True
# 只记录包括的请求方式操作到MongoDB数据库
OPERATION_RECORD_METHOD = ["POST", "PUT", "DELETE"]
# 忽略的操作接口函数名称,列表中的函数名称不会被记录到操作日志中
IGNORE_OPERATION_FUNCTION = ["post_dicts_details"]
"""
中间件配置
"""
MIDDLEWARES = [
"core.middleware.register_request_log_middleware" if REQUEST_LOG_RECORD else None,
"core.middleware.register_operation_record_middleware" if OPERATION_LOG_RECORD and MONGO_DB_ENABLE else None,
"core.middleware.register_demo_env_middleware" if DEMO else None,
"core.middleware.register_jwt_refresh_middleware"
]
"""
定时任务配置
"""
# 发布/订阅通道,与定时任务程序相互关联,请勿随意更改
SUBSCRIBE = 'kinit_queue'