From ec93cad5238ea426bcff94ac1dadaf5b334911b6 Mon Sep 17 00:00:00 2001 From: zk Date: Thu, 2 Apr 2026 17:16:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=AD=E9=97=B4=E4=BB=B6?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/middleware.py | 29 +++++------------------------ 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/app/core/middleware.py b/app/core/middleware.py index b4dce67..9588d52 100644 --- a/app/core/middleware.py +++ b/app/core/middleware.py @@ -1,7 +1,7 @@ import json import re import time -from datetime import datetime, timezone +from datetime import datetime from typing import Any, Dict import jwt @@ -82,7 +82,7 @@ class JwtAuthMiddleware(BaseHTTPMiddleware): if redis_client is None: return - redis_key = f"login:token:{user_id}" + redis_key = f"client:login:token:{user_id}" raw = await redis_client.get(redis_key) if not raw: return @@ -90,30 +90,11 @@ class JwtAuthMiddleware(BaseHTTPMiddleware): info = json.loads(raw) if isinstance(raw, str) else raw devices = info.get("loginDevices", []) - # 过滤过期设备 - now = datetime.now(timezone.utc) - valid_devices = [] - for d in devices: - last_login_str = d["lastLoginTime"] - # 兼容 Java Instant 格式(尾部 Z) - if last_login_str.endswith("Z"): - last_login_str = last_login_str[:-1] + "+00:00" - last_login = datetime.fromisoformat(last_login_str) - if last_login.tzinfo is None: - last_login = last_login.replace(tzinfo=timezone.utc) - if (now - last_login).total_seconds() < settings.token_expire_seconds: - valid_devices.append(d) - - # 校验当前设备 - device_map = {d["uuId"]: d for d in valid_devices} - if uu_id not in device_map: + # 校验当前设备是否在列表中 + device_uuids = {d["uuId"] for d in devices} + if uu_id not in device_uuids: return - # 续期 - device_map[uu_id]["lastLoginTime"] = now.isoformat() - info["loginDevices"] = valid_devices - await redis_client.set(redis_key, json.dumps(info), ex=settings.token_expire_seconds) - RequestContext.user_id.set(int(user_id))