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/
|
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
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user