mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 13:12:24 +00:00
fix jwt parameter parsing error
This commit is contained in:
@@ -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}:*')
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user