update. 添加jwt配置和接口权限配置
This commit is contained in:
+41
-56
@@ -10,6 +10,7 @@ For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/6.0/ref/settings/
|
||||
"""
|
||||
import os
|
||||
from datetime import timedelta
|
||||
from pathlib import Path
|
||||
|
||||
import environ
|
||||
@@ -221,63 +222,47 @@ MEDIA_URL = '/media/'
|
||||
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
||||
|
||||
# 日志配置
|
||||
LOGGING = {
|
||||
'version': 1, # 版本
|
||||
'disable_existing_loggers': False, # 是否禁用已经存在的日志器
|
||||
'formatters': { # 日志信息显示的格式
|
||||
'verbose': {
|
||||
'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
|
||||
},
|
||||
'simple': {
|
||||
'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
|
||||
},
|
||||
},
|
||||
'filters': { # 过滤器
|
||||
'require_debug_true': { # django在debug模式下才输出日志
|
||||
'()': 'django.utils.log.RequireDebugTrue',
|
||||
},
|
||||
},
|
||||
'handlers': { # 日志处理方法
|
||||
'console': { # 向终端中输出日志
|
||||
'level': 'DEBUG', # 输出等级为“INFO”
|
||||
'filters': ['require_debug_true'],
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'simple'
|
||||
},
|
||||
'file': { # 向文件中输出日志
|
||||
'level': os.getenv('LOGGER_LEVEL') if os.getenv('LOGGER_LEVEL') else 'INFO', # 输出等级为“INFO”
|
||||
# 新增内容
|
||||
# 'class': 'logging.handlers.TimedRotatingFileHandler',
|
||||
# 'filename': os.path.join(BASE_DIR, 'logs/logs.log'),
|
||||
# 'when': 'm',
|
||||
# 'interval': 10,
|
||||
# 'backupCount': 10,
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': BASE_DIR / "db/logs/django_server.log", # 日志文件的位置
|
||||
'maxBytes': 5 * 1024 * 1024, # 日志文件的大小(300*1024*1024为300MB)
|
||||
'backupCount': 10, # 日志文件的数量(超过设定的最大值会自动备份,备份数量最大值为10)
|
||||
'formatter': 'verbose', # 日志输出格式:使用了在之前定义的'verbose'
|
||||
'encoding': 'utf-8' # 新增此行,指定文件编码为UTF-8
|
||||
},
|
||||
},
|
||||
'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,
|
||||
},
|
||||
}
|
||||
NINJA_JWT = {
|
||||
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=15), # 访问令牌有效期
|
||||
'REFRESH_TOKEN_LIFETIME': timedelta(days=3), # 刷新令牌有效期
|
||||
'ROTATE_REFRESH_TOKENS': False,
|
||||
'BLACKLIST_AFTER_ROTATION': False, # 旋转后列入黑名单
|
||||
'UPDATE_LAST_LOGIN': True, # 更新最后登录
|
||||
|
||||
'ALGORITHM': 'HS256',
|
||||
'SIGNING_KEY': SECRET_KEY,
|
||||
'VERIFYING_KEY': None,
|
||||
'AUDIENCE': None,
|
||||
'ISSUER': None,
|
||||
'JWK_URL': None,
|
||||
'LEEWAY': 0,
|
||||
|
||||
'USER_ID_FIELD': 'id',
|
||||
'USER_ID_CLAIM': 'user_id',
|
||||
'USER_AUTHENTICATION_RULE': 'ninja_jwt.authentication.default_user_authentication_rule',
|
||||
|
||||
# 'AUTH_TOKEN_CLASSES': ('ninja_jwt.tokens.AccessToken',),
|
||||
# 'TOKEN_TYPE_CLAIM': 'token_type',
|
||||
# 'TOKEN_USER_CLASS': 'ninja_jwt.models.TokenUser',
|
||||
|
||||
# 'JTI_CLAIM': 'jti',
|
||||
#
|
||||
# 'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
|
||||
# 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
|
||||
# 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
|
||||
|
||||
# For Controller Schemas
|
||||
# FOR OBTAIN PAIR
|
||||
# 'TOKEN_OBTAIN_PAIR_INPUT_SCHEMA': "ninja_jwt.schema.TokenObtainPairInputSchema",
|
||||
# 'TOKEN_OBTAIN_PAIR_REFRESH_INPUT_SCHEMA': "ninja_jwt.schema.TokenRefreshInputSchema",
|
||||
# FOR SLIDING TOKEN
|
||||
# 'TOKEN_OBTAIN_SLIDING_INPUT_SCHEMA': "ninja_jwt.schema.TokenObtainSlidingInputSchema",
|
||||
# 'TOKEN_OBTAIN_SLIDING_REFRESH_INPUT_SCHEMA': "ninja_jwt.schema.TokenRefreshSlidingInputSchema",
|
||||
#
|
||||
# 'TOKEN_BLACKLIST_INPUT_SCHEMA': "ninja_jwt.schema.TokenBlacklistInputSchema",
|
||||
# 'TOKEN_VERIFY_INPUT_SCHEMA': "ninja_jwt.schema.TokenVerifyInputSchema",
|
||||
}
|
||||
|
||||
# 调整POST传输数据文件大小限制
|
||||
DATA_UPLOAD_MAX_MEMORY_SIZE = 25 * 1024 * 1024 * 1024
|
||||
FILE_UPLOAD_MAX_MEMORY_SIZE = 25 * 1024 * 1024 * 1024
|
||||
|
||||
+3
-1
@@ -28,6 +28,7 @@ from loguru import logger
|
||||
from ninja.errors import ValidationError
|
||||
from ninja_extra import NinjaExtraAPI
|
||||
from ninja_jwt.controller import NinjaJWTDefaultController
|
||||
from ninja_jwt.authentication import JWTAuth
|
||||
|
||||
from base.views import custom_upload_file
|
||||
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)
|
||||
|
||||
|
||||
api_v1 = UnifiedNinjaAPI(version='1.0.0')
|
||||
api_v1 = UnifiedNinjaAPI(version='1.0.0', auth=JWTAuth())
|
||||
api_v1.register_controllers(NinjaJWTDefaultController)
|
||||
|
||||
auto_load_routers()
|
||||
logger.debug(api_v1.urls)
|
||||
|
||||
|
||||
@api_v1.exception_handler(ValidationError)
|
||||
|
||||
Reference in New Issue
Block a user