fix(contribution-service): 修复JWT验证与auth-service不兼容

- 移除 type 字段检查 (auth-service 不生成此字段)
- 修复 JwtPayload 接口与 auth-service 生成的 token 结构一致
- 从 payload.sub 获取 accountSequence

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-11 18:18:21 -08:00
parent 4d5c9e7c49
commit 608e22a8e7
1 changed files with 7 additions and 8 deletions

View File

@ -13,9 +13,9 @@ export const IS_PUBLIC_KEY = 'isPublic';
export const Public = () => SetMetadata(IS_PUBLIC_KEY, true); export const Public = () => SetMetadata(IS_PUBLIC_KEY, true);
export interface JwtPayload { export interface JwtPayload {
sub: string; sub: string; // accountSequence
accountSequence: string; phone?: string;
type: 'access' | 'refresh'; source?: string;
iat: number; iat: number;
exp: number; exp: number;
} }
@ -49,14 +49,13 @@ export class JwtAuthGuard implements CanActivate {
const secret = this.configService.get<string>('JWT_SECRET', 'default-secret'); const secret = this.configService.get<string>('JWT_SECRET', 'default-secret');
const payload = jwt.verify(token, secret) as JwtPayload; const payload = jwt.verify(token, secret) as JwtPayload;
if (payload.type !== 'access') {
throw new UnauthorizedException('Invalid token type');
}
// 将用户信息附加到请求对象 // 将用户信息附加到请求对象
// payload.sub 是 accountSequence (由 auth-service 签发)
request.user = { request.user = {
userId: payload.sub, userId: payload.sub,
accountSequence: payload.accountSequence, accountSequence: payload.sub,
phone: payload.phone,
source: payload.source,
}; };
return true; return true;