update. 添加jwt配置和接口权限配置

This commit is contained in:
2026-04-07 12:51:57 +08:00
parent 402f7e512e
commit 53e91fa458
2 changed files with 44 additions and 57 deletions
+41 -56
View File
@@ -10,6 +10,7 @@ For the full list of settings and their values, see
https://docs.djangoproject.com/en/6.0/ref/settings/ https://docs.djangoproject.com/en/6.0/ref/settings/
""" """
import os import os
from datetime import timedelta
from pathlib import Path from pathlib import Path
import environ import environ
@@ -221,63 +222,47 @@ MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# 日志配置 # 日志配置
LOGGING = { NINJA_JWT = {
'version': 1, # 版本 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=15), # 访问令牌有效期
'disable_existing_loggers': False, # 是否禁用已经存在的日志器 'REFRESH_TOKEN_LIFETIME': timedelta(days=3), # 刷新令牌有效期
'formatters': { # 日志信息显示的格式 'ROTATE_REFRESH_TOKENS': False,
'verbose': { 'BLACKLIST_AFTER_ROTATION': False, # 旋转后列入黑名单
'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' 'UPDATE_LAST_LOGIN': True, # 更新最后登录
},
'simple': { 'ALGORITHM': 'HS256',
'format': '%(levelname)s %(module)s %(lineno)d %(message)s' 'SIGNING_KEY': SECRET_KEY,
}, 'VERIFYING_KEY': None,
}, 'AUDIENCE': None,
'filters': { # 过滤器 'ISSUER': None,
'require_debug_true': { # django在debug模式下才输出日志 'JWK_URL': None,
'()': 'django.utils.log.RequireDebugTrue', 'LEEWAY': 0,
},
}, 'USER_ID_FIELD': 'id',
'handlers': { # 日志处理方法 'USER_ID_CLAIM': 'user_id',
'console': { # 向终端中输出日志 'USER_AUTHENTICATION_RULE': 'ninja_jwt.authentication.default_user_authentication_rule',
'level': 'DEBUG', # 输出等级为“INFO”
'filters': ['require_debug_true'], # 'AUTH_TOKEN_CLASSES': ('ninja_jwt.tokens.AccessToken',),
'class': 'logging.StreamHandler', # 'TOKEN_TYPE_CLAIM': 'token_type',
'formatter': 'simple' # 'TOKEN_USER_CLASS': 'ninja_jwt.models.TokenUser',
},
'file': { # 向文件中输出日志 # 'JTI_CLAIM': 'jti',
'level': os.getenv('LOGGER_LEVEL') if os.getenv('LOGGER_LEVEL') else 'INFO', # 输出等级为“INFO” #
# 新增内容 # 'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
# 'class': 'logging.handlers.TimedRotatingFileHandler', # 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
# 'filename': os.path.join(BASE_DIR, 'logs/logs.log'), # 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
# 'when': 'm',
# 'interval': 10, # For Controller Schemas
# 'backupCount': 10, # FOR OBTAIN PAIR
'class': 'logging.handlers.RotatingFileHandler', # 'TOKEN_OBTAIN_PAIR_INPUT_SCHEMA': "ninja_jwt.schema.TokenObtainPairInputSchema",
'filename': BASE_DIR / "db/logs/django_server.log", # 日志文件的位置 # 'TOKEN_OBTAIN_PAIR_REFRESH_INPUT_SCHEMA': "ninja_jwt.schema.TokenRefreshInputSchema",
'maxBytes': 5 * 1024 * 1024, # 日志文件的大小(300*1024*1024为300MB # FOR SLIDING TOKEN
'backupCount': 10, # 日志文件的数量(超过设定的最大值会自动备份,备份数量最大值为10) # 'TOKEN_OBTAIN_SLIDING_INPUT_SCHEMA': "ninja_jwt.schema.TokenObtainSlidingInputSchema",
'formatter': 'verbose', # 日志输出格式:使用了在之前定义的'verbose' # 'TOKEN_OBTAIN_SLIDING_REFRESH_INPUT_SCHEMA': "ninja_jwt.schema.TokenRefreshSlidingInputSchema",
'encoding': 'utf-8' # 新增此行,指定文件编码为UTF-8 #
}, # 'TOKEN_BLACKLIST_INPUT_SCHEMA': "ninja_jwt.schema.TokenBlacklistInputSchema",
}, # 'TOKEN_VERIFY_INPUT_SCHEMA': "ninja_jwt.schema.TokenVerifyInputSchema",
'loggers': { # 日志器
'ptools': { # 定义了一个名为django的日志器
'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志
'propagate': True, # 是否继续传递日志信息
'level': os.getenv('LOGGER_LEVEL') if os.getenv('LOGGER_LEVEL') else 'INFO', # 日志器接收的最低日志级别
},
'requests': {
'level': 'WARNING',
'handlers': ['console'], # 或你定义的其他 handler
'propagate': False,
},
'urllib3': {
'level': 'WARNING',
'handlers': ['console'],
'propagate': False,
},
}
} }
# 调整POST传输数据文件大小限制 # 调整POST传输数据文件大小限制
DATA_UPLOAD_MAX_MEMORY_SIZE = 25 * 1024 * 1024 * 1024 DATA_UPLOAD_MAX_MEMORY_SIZE = 25 * 1024 * 1024 * 1024
FILE_UPLOAD_MAX_MEMORY_SIZE = 25 * 1024 * 1024 * 1024 FILE_UPLOAD_MAX_MEMORY_SIZE = 25 * 1024 * 1024 * 1024
+3 -1
View File
@@ -28,6 +28,7 @@ from loguru import logger
from ninja.errors import ValidationError from ninja.errors import ValidationError
from ninja_extra import NinjaExtraAPI from ninja_extra import NinjaExtraAPI
from ninja_jwt.controller import NinjaJWTDefaultController from ninja_jwt.controller import NinjaJWTDefaultController
from ninja_jwt.authentication import JWTAuth
from base.views import custom_upload_file from base.views import custom_upload_file
from common.common_response import CommonResponse from common.common_response import CommonResponse
@@ -92,10 +93,11 @@ class UnifiedNinjaAPI(NinjaExtraAPI):
return super().create_response(request, data, status=status, temporal_response=temporal_response) return super().create_response(request, data, status=status, temporal_response=temporal_response)
api_v1 = UnifiedNinjaAPI(version='1.0.0') api_v1 = UnifiedNinjaAPI(version='1.0.0', auth=JWTAuth())
api_v1.register_controllers(NinjaJWTDefaultController) api_v1.register_controllers(NinjaJWTDefaultController)
auto_load_routers() auto_load_routers()
logger.debug(api_v1.urls)
@api_v1.exception_handler(ValidationError) @api_v1.exception_handler(ValidationError)