From c9217a85a96ba2c6ce422550a630dffce8790683 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 5 Mar 2026 21:24:12 -0800 Subject: [PATCH] =?UTF-8?q?fix(presence-service):=20JWT=20guard=20?= =?UTF-8?q?=E7=94=A8=20sub=20=E5=85=BC=E5=AE=B9=E6=97=A7=20token=20?= =?UTF-8?q?=E7=9A=84=20userId/accountSequence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧 token 只有 sub 字段,新 token 有 userId/accountSequence。 用 payload.userId ?? payload.sub 兼容两种格式, 确保旧 token 心跳能正确写入在线状态。 Co-Authored-By: Claude Sonnet 4.6 --- .../presence-service/src/shared/guards/jwt-auth.guard.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/services/presence-service/src/shared/guards/jwt-auth.guard.ts b/backend/services/presence-service/src/shared/guards/jwt-auth.guard.ts index 8d4b0a2e..262ef990 100644 --- a/backend/services/presence-service/src/shared/guards/jwt-auth.guard.ts +++ b/backend/services/presence-service/src/shared/guards/jwt-auth.guard.ts @@ -26,8 +26,8 @@ export class JwtAuthGuard implements CanActivate { // 兼容旧 token(无 type 字段)和新 token(type: 'access') if (payload.type && payload.type !== 'access') throw new UnauthorizedException('无效的令牌类型'); request.user = { - userId: payload.userId, - accountSequence: payload.accountSequence, + userId: payload.userId ?? payload.sub, + accountSequence: payload.accountSequence ?? payload.sub, deviceId: payload.deviceId, }; } catch {