fix: improve error messages for login and add backend response details

This commit is contained in:
LTbinglingfeng
2026-05-20 01:12:50 +08:00
parent ef7b63ef22
commit 075c2fa980
5 changed files with 44 additions and 25 deletions
+6 -5
View File
@@ -85,14 +85,15 @@
"submit_button": "Login",
"submitting": "Connecting...",
"error_title": "Login Failed",
"error_backend_detail": "Backend response",
"error_required": "Please fill in complete connection information",
"error_invalid": "Connection failed, please check address and key",
"error_invalid": "Connection failed, please check the server address, Management API, and management key",
"error_network": "Network connection failed, please check your network or server address",
"error_timeout": "Connection timed out, server not responding",
"error_unauthorized": "Authentication failed, invalid management key",
"error_forbidden": "Access denied, insufficient permissions",
"error_not_found": "Server address invalid or management API not enabled",
"error_server": "Internal server error, please try again later",
"error_unauthorized": "Authentication failed, management key is missing or invalid",
"error_forbidden": "Access denied, remote management is disabled, the management key is not configured, or this IP is temporarily banned",
"error_not_found": "Management API not found, confirm the server address points to the CLIProxyAPI backend",
"error_server": "Backend failed while handling the management request, check the server logs",
"error_cors": "Cross-origin request blocked, please check server configuration",
"error_ssl": "SSL/TLS certificate verification failed"
},
+6 -5
View File
@@ -85,14 +85,15 @@
"submit_button": "Войти",
"submitting": "Подключение...",
"error_title": "Ошибка входа",
"error_backend_detail": "Ответ сервера",
"error_required": "Пожалуйста, заполните все данные подключения",
"error_invalid": "Подключение не удалось, проверьте адрес и ключ",
"error_invalid": "Подключение не удалось, проверьте адрес сервера, Management API и ключ управления",
"error_network": "Сетевая ошибка, проверьте подключение или адрес сервера",
"error_timeout": "Время ожидания истекло, сервер не отвечает",
"error_unauthorized": "Аутентификация не удалась, неверный ключ управления",
"error_forbidden": "Доступ запрещён, недостаточно прав",
"error_not_found": "Неверный адрес сервера или интерфейс управления не включён",
"error_server": "Внутренняя ошибка сервера, попробуйте позже",
"error_unauthorized": "Аутентификация не удалась, ключ управления отсутствует или неверен",
"error_forbidden": "Доступ запрещён: удалённое управление отключено, ключ управления не настроен или IP временно заблокирован",
"error_not_found": "Management API не найден, проверьте, что адрес указывает на backend CLIProxyAPI",
"error_server": "Backend не смог обработать запрос управления, проверьте журналы сервера",
"error_cors": "Блокировка CORS, проверьте конфигурацию сервера",
"error_ssl": "Ошибка проверки SSL/TLS сертификата"
},
+6 -5
View File
@@ -85,14 +85,15 @@
"submit_button": "登录",
"submitting": "连接中...",
"error_title": "登录失败",
"error_backend_detail": "后端返回",
"error_required": "请填写完整的连接信息",
"error_invalid": "连接失败,请检查地址和密钥",
"error_invalid": "连接失败,请检查服务地址、管理接口和管理密钥",
"error_network": "网络连接失败,请检查网络或服务器地址",
"error_timeout": "连接超时,服务器无响应",
"error_unauthorized": "认证失败,管理密钥无效",
"error_forbidden": "访问被拒绝,权限不足",
"error_not_found": "服务地址无效或管理接口未启用",
"error_server": "服务器内部错误,请稍后重试",
"error_unauthorized": "认证失败,管理密钥缺失或无效",
"error_forbidden": "访问被拒绝,远程管理未启用、管理密钥未配置或 IP 被临时封禁",
"error_not_found": "未找到 Management API,请确认服务地址指向 CLIProxyAPI 后端",
"error_server": "后端处理管理接口时发生错误,请查看服务日志",
"error_cors": "跨域请求被阻止,请检查服务器配置",
"error_ssl": "SSL/TLS 证书验证失败"
},
+6 -5
View File
@@ -85,14 +85,15 @@
"submit_button": "登入",
"submitting": "連線中...",
"error_title": "登入失敗",
"error_backend_detail": "後端返回",
"error_required": "請填寫完整的連線資訊",
"error_invalid": "連線失敗,請檢查位址和金鑰",
"error_invalid": "連線失敗,請檢查服務位址、管理介面和管理金鑰",
"error_network": "網路連線失敗,請檢查網路或伺服器位址",
"error_timeout": "連線逾時,伺服器無回應",
"error_unauthorized": "驗證失敗,管理金鑰無效",
"error_forbidden": "存取被拒絕,權限不足",
"error_not_found": "伺服器位址無效或管理介面未啟用",
"error_server": "伺服器內部錯誤,請稍後再試",
"error_unauthorized": "驗證失敗,管理金鑰缺失或無效",
"error_forbidden": "存取被拒絕,遠端管理未啟用、管理金鑰未設定或 IP 被暫時封鎖",
"error_not_found": "找不到 Management API,請確認服務位址指向 CLIProxyAPI 後端",
"error_server": "後端處理管理介面時發生錯誤,請查看服務日誌",
"error_cors": "跨域請求被阻擋,請檢查伺服器設定",
"error_ssl": "SSL/TLS 憑證驗證失敗"
},
+20 -5
View File
@@ -32,18 +32,33 @@ function getLocalizedErrorMessage(error: unknown, t: (key: string) => string): s
? error
: '';
const withHttpStatus = (summary: string) => {
if (!status) {
return summary;
}
const genericAxiosMessage = `Request failed with status code ${status}`;
const detail = message.trim();
const backendDetail =
detail && detail !== genericAxiosMessage
? ` (${t('login.error_backend_detail')}: ${detail})`
: '';
return `HTTP ${status}: ${summary}${backendDetail}`;
};
// 根据 HTTP 状态码判断
if (status === 401) {
return t('login.error_unauthorized');
return withHttpStatus(t('login.error_unauthorized'));
}
if (status === 403) {
return t('login.error_forbidden');
return withHttpStatus(t('login.error_forbidden'));
}
if (status === 404) {
return t('login.error_not_found');
return withHttpStatus(t('login.error_not_found'));
}
if (status && status >= 500) {
return t('login.error_server');
return withHttpStatus(t('login.error_server'));
}
// 根据 axios 错误码判断
@@ -63,7 +78,7 @@ function getLocalizedErrorMessage(error: unknown, t: (key: string) => string): s
}
// 默认错误消息
return t('login.error_invalid');
return withHttpStatus(t('login.error_invalid'));
}
export function LoginPage() {