From 42269f78c39dc6cf5eabaa5c5f0dd1ed3125886d Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Tue, 16 Jul 2024 09:40:56 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BD=BF=E7=94=A8PyJWT=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2python-jose=E4=BB=A5=E8=A7=A3=E5=86=B3=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E5=AE=89=E5=85=A8=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/controller/login_controller.py | 2 +- .../module_admin/service/login_service.py | 13 +++++++------ .../module_admin/service/online_service.py | 2 +- ruoyi-fastapi-backend/requirements.txt | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/controller/login_controller.py b/ruoyi-fastapi-backend/module_admin/controller/login_controller.py index 903e4d6..6d13fcc 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/login_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/login_controller.py @@ -1,7 +1,7 @@ +import jwt import uuid from datetime import datetime, timedelta from fastapi import APIRouter, Depends, Request -from jose import jwt from sqlalchemy.ext.asyncio import AsyncSession from typing import Optional from config.enums import BusinessType, RedisInitKeyConfig diff --git a/ruoyi-fastapi-backend/module_admin/service/login_service.py b/ruoyi-fastapi-backend/module_admin/service/login_service.py index 04aa449..5579f0d 100644 --- a/ruoyi-fastapi-backend/module_admin/service/login_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/login_service.py @@ -1,9 +1,10 @@ +import jwt import random import uuid -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from fastapi import Depends, Form, Request from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm -from jose import JWTError, jwt +from jwt.exceptions import InvalidTokenError from sqlalchemy.ext.asyncio import AsyncSession from typing import Dict, List, Optional, Union from config.constant import CommonConstant, MenuConstant @@ -172,9 +173,9 @@ class LoginService: """ to_encode = data.copy() if expires_delta: - expire = datetime.utcnow() + expires_delta + expire = datetime.now(timezone.utc) + expires_delta else: - expire = datetime.utcnow() + timedelta(minutes=30) + expire = datetime.now(timezone.utc) + timedelta(minutes=30) to_encode.update({'exp': expire}) encoded_jwt = jwt.encode(to_encode, JwtConfig.jwt_secret_key, algorithm=JwtConfig.jwt_algorithm) return encoded_jwt @@ -201,11 +202,11 @@ class LoginService: payload = jwt.decode(token, JwtConfig.jwt_secret_key, algorithms=[JwtConfig.jwt_algorithm]) user_id: str = payload.get('user_id') session_id: str = payload.get('session_id') - if user_id is None: + if not user_id: logger.warning('用户token不合法') raise AuthException(data='', message='用户token不合法') token_data = TokenData(user_id=int(user_id)) - except JWTError: + except InvalidTokenError: logger.warning('用户token已失效,请重新登录') raise AuthException(data='', message='用户token已失效,请重新登录') query_user = await UserDao.get_user_by_id(query_db, user_id=token_data.user_id) diff --git a/ruoyi-fastapi-backend/module_admin/service/online_service.py b/ruoyi-fastapi-backend/module_admin/service/online_service.py index 6f15112..0d1c913 100644 --- a/ruoyi-fastapi-backend/module_admin/service/online_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/online_service.py @@ -1,5 +1,5 @@ +import jwt from fastapi import Request -from jose import jwt from config.enums import RedisInitKeyConfig from config.env import JwtConfig from exceptions.exception import ServiceException diff --git a/ruoyi-fastapi-backend/requirements.txt b/ruoyi-fastapi-backend/requirements.txt index 9b146ca..1a7fc30 100644 --- a/ruoyi-fastapi-backend/requirements.txt +++ b/ruoyi-fastapi-backend/requirements.txt @@ -9,8 +9,8 @@ passlib[bcrypt]==1.7.4 Pillow==10.4.0 psutil==6.0.0 pydantic-validation-decorator==0.1.2 +PyJWT[crypto]==2.8.0 PyMySQL==1.1.1 -python-jose[cryptography]==3.3.0 redis==5.0.7 requests==2.32.3 SQLAlchemy[asyncio]==2.0.31