From 6fbddbafed71a6bfb9fff4d5ab5f2ffdb5bc4fe5 Mon Sep 17 00:00:00 2001 From: downdawn Date: Fri, 19 May 2023 17:16:31 +0800 Subject: [PATCH] fix jwt parameter parsing error --- backend/app/common/jwt.py | 7 +++---- backend/app/services/user_service.py | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/app/common/jwt.py b/backend/app/common/jwt.py index 9285921a..4cd864dd 100644 --- a/backend/app/common/jwt.py +++ b/backend/app/common/jwt.py @@ -43,12 +43,11 @@ def password_verify(plain_password: str, hashed_password: str) -> bool: return pwd_context.verify(plain_password, hashed_password) -async def create_access_token(sub: int | Any, data: dict, expires_delta: timedelta | None = None) -> str: +async def create_access_token(sub: int | Any, expires_delta: timedelta | None = None, **kwargs) -> str: """ Generate encryption token :param sub: The subject/userid of the JWT - :param data: Data transferred to the token :param expires_delta: Increased expiry time :return: """ @@ -56,9 +55,9 @@ async def create_access_token(sub: int | Any, data: dict, expires_delta: timedel expires = datetime.utcnow() + expires_delta expire_seconds = expires_delta.total_seconds() else: - expires = datetime.utcnow() + timedelta(seconds=settings.TOKEN_EXPIRE_MINUTES) + expires = datetime.utcnow() + timedelta(seconds=settings.TOKEN_EXPIRE_SECONDS) expire_seconds = settings.TOKEN_EXPIRE_SECONDS - to_encode = {'exp': expires, 'sub': str(sub), **data} + to_encode = {'exp': expires, 'sub': str(sub), **kwargs} token = jwt.encode(to_encode, settings.TOKEN_SECRET_KEY, settings.TOKEN_ALGORITHM) if sub not in settings.TOKEN_WHITE_LIST: await redis_client.delete(f'token:{sub}:*') diff --git a/backend/app/services/user_service.py b/backend/app/services/user_service.py index 7663ac0c..3d6309f0 100644 --- a/backend/app/services/user_service.py +++ b/backend/app/services/user_service.py @@ -32,7 +32,7 @@ class UserService: # 获取最新用户信息 user = await UserDao.get_user_by_id(db, current_user.id) # 创建token - access_token = await jwt.create_access_token(user.id, {'role_ids': user_role_ids}) + access_token = await jwt.create_access_token(user.id, role_ids=user_role_ids) return access_token, user @staticmethod @@ -48,7 +48,7 @@ class UserService: await UserDao.update_user_login_time(db, obj.username) user_role_ids = await UserDao.get_user_role_ids(db, current_user.id) user = await UserDao.get_user_by_id(db, current_user.id) - access_token = await jwt.create_access_token(user.id, {'role_ids': user_role_ids}) + access_token = await jwt.create_access_token(user.id, role_ids=user_role_ids) return access_token, user @staticmethod