diff --git a/apps/common/auth/handle/impl/user_token.py b/apps/common/auth/handle/impl/user_token.py index dbb6bd2b5..bdb041f9f 100644 --- a/apps/common/auth/handle/impl/user_token.py +++ b/apps/common/auth/handle/impl/user_token.py @@ -6,18 +6,18 @@ @date:2024/3/14 03:02 @desc: 用户认证 """ +from django.core import cache from django.db.models import QuerySet +from django.utils.translation import gettext_lazy as _ from common.auth.handle.auth_base_handle import AuthBaseHandle from common.constants.authentication_type import AuthenticationType from common.constants.permission_constants import RoleConstants, get_permission_list_by_role, Auth from common.exception.app_exception import AppAuthenticationFailed -from smartdoc.settings import JWT_AUTH +from smartdoc.const import CONFIG from users.models import User -from django.core import cache - from users.models.user import get_user_dynamics_permission -from django.utils.translation import gettext_lazy as _ + token_cache = cache.caches['token_cache'] @@ -35,7 +35,7 @@ class UserToken(AuthBaseHandle): auth_details = get_token_details() user = QuerySet(User).get(id=auth_details['id']) # 续期 - token_cache.touch(token, timeout=JWT_AUTH['JWT_EXPIRATION_DELTA'].total_seconds()) + token_cache.touch(token, timeout=CONFIG.get_session_timeout()) rule = RoleConstants[user.role] permission_list = get_permission_list_by_role(RoleConstants[user.role]) # 获取用户的应用和知识库的权限 diff --git a/apps/smartdoc/conf.py b/apps/smartdoc/conf.py index 8da97883c..21deebf55 100644 --- a/apps/smartdoc/conf.py +++ b/apps/smartdoc/conf.py @@ -7,6 +7,7 @@ 2. 程序需要, 用户不需要更改的写到settings中 3. 程序需要, 用户需要更改的写到本config中 """ +import datetime import errno import logging import os @@ -119,6 +120,9 @@ class Config(dict): } } + def get_session_timeout(self): + return datetime.timedelta(seconds=self.get('SESSION_TIMEOUT', 28800)) + def get_language_code(self): return self.get('LANGUAGE_CODE', 'zh-CN') diff --git a/apps/users/views/user.py b/apps/users/views/user.py index 9e21daa4e..3ca8b395f 100644 --- a/apps/users/views/user.py +++ b/apps/users/views/user.py @@ -22,7 +22,7 @@ from common.constants.permission_constants import PermissionConstants, CompareCo from common.log.log import log from common.response import result from common.util.common import encryption -from smartdoc.settings import JWT_AUTH +from smartdoc.const import CONFIG from users.serializers.user_serializers import RegisterSerializer, LoginSerializer, CheckCodeSerializer, \ RePasswordSerializer, \ SendEmailSerializer, UserProfile, UserSerializer, UserManageSerializer, UserInstanceSerializer, SystemSerializer, \ @@ -199,7 +199,7 @@ class Login(APIView): # 校验请求参数 user = login_request.is_valid(raise_exception=True) token = login_request.get_user_token() - token_cache.set(token, user, timeout=JWT_AUTH['JWT_EXPIRATION_DELTA']) + token_cache.set(token, user, timeout=CONFIG.get_session_timeout()) return result.success(token)