From 5df9c97794cbd2424233c834b2319afd7e79b843 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 5 Mar 2026 08:47:17 -0800 Subject: [PATCH] =?UTF-8?q?fix(account):=20=E4=BF=AE=E5=A4=8D=20verifyLogi?= =?UTF-8?q?nPassword/verifyPaymentPassword=20=E6=9C=AA=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=20TransformInterceptor=20=E5=8C=85=E8=A3=85=E5=B1=82=E7=9A=84?= =?UTF-8?q?=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端 TransformInterceptor 将所有响应包装为 { success, data: <实际数据> }, 但两个 verify 方法直接读 response.data['valid'],导致始终得到 null == true → false, 用户输入正确密码也显示"密码错误"。修复为读取 response.data['data']['valid']。 Co-Authored-By: Claude Sonnet 4.6 --- .../mobile-app/lib/core/services/account_service.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/mobile-app/lib/core/services/account_service.dart b/frontend/mobile-app/lib/core/services/account_service.dart index ae370f1d..84f3c01c 100644 --- a/frontend/mobile-app/lib/core/services/account_service.dart +++ b/frontend/mobile-app/lib/core/services/account_service.dart @@ -2109,7 +2109,7 @@ class AccountService { /// /// [password] 用户输入的密码明文 /// - /// 后端响应格式:{ "valid": true/false } + /// 后端响应格式(经 TransformInterceptor 包装):{ "success": true, "data": { "valid": true/false } } /// - 返回 true:密码正确 /// - 返回 false:密码错误(valid=false) /// - 抛出异常:网络/系统错误(ApiException 或其他) @@ -2120,7 +2120,7 @@ class AccountService { '/user/verify-password', data: {'password': password}, ); - final valid = response.data['valid'] == true; + final valid = response.data['data']['valid'] == true; debugPrint('$_tag verifyLoginPassword() - 验证结果: $valid'); return valid; } on ApiException catch (e) { @@ -2196,7 +2196,7 @@ class AccountService { /// 验证支付密码 (POST /user/verify-payment-password) /// - /// 后端响应格式:{ "valid": true/false } + /// 后端响应格式(经 TransformInterceptor 包装):{ "success": true, "data": { "valid": true/false } } /// - 返回 true:密码正确 /// - 返回 false:密码错误 /// - 抛出异常:未设置支付密码或网络错误 @@ -2207,7 +2207,7 @@ class AccountService { '/user/verify-payment-password', data: {'password': password}, ); - final valid = response.data['valid'] == true; + final valid = response.data['data']['valid'] == true; debugPrint('$_tag verifyPaymentPassword() - 验证结果: $valid'); return valid; } on ApiException catch (e) {