From ec0af6c47e1f34daa07d76317362ff9e88711553 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 4 Mar 2026 00:23:04 -0800 Subject: [PATCH] =?UTF-8?q?fix(auth-service):=20=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=E5=AF=B9=E6=89=8B=E6=9C=BA=E5=8F=B7?= =?UTF-8?q?=E5=81=9A=20E.164=20=E5=BD=92=E4=B8=80=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 注册时手机号存储为 +8618926762721,但密码登录用原始输入 18926762721 查库,导致找不到用户。在 login() 中先尝试 Phone.create() 归一化,如果不是合法手机号则作为邮箱使用。 Co-Authored-By: Claude Sonnet 4.6 --- .../src/application/services/auth.service.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/services/auth-service/src/application/services/auth.service.ts b/backend/services/auth-service/src/application/services/auth.service.ts index 44f8a08..960ec70 100644 --- a/backend/services/auth-service/src/application/services/auth.service.ts +++ b/backend/services/auth-service/src/application/services/auth.service.ts @@ -113,7 +113,14 @@ export class AuthService { /* ── Password Login ── */ async login(dto: LoginDto): Promise { - const user = await this.userRepo.findByPhoneOrEmail(dto.identifier); + // Normalize phone numbers to E.164 before lookup (e.g. 18926762721 → +8618926762721) + let identifier = dto.identifier; + try { + identifier = Phone.create(dto.identifier).value; + } catch { + // Not a valid phone number — treat as email, use as-is + } + const user = await this.userRepo.findByPhoneOrEmail(identifier); if (!user) { throw new UnauthorizedException('账号或密码错误'); }