修复登录失败显示英文原文的问题(第1章复测发现)
Tinode 原生 WS 登录走 {ctrl} 协议,不经过 im-api.js 的 REASON_MESSAGES 翻译表(那张表只在
REST 请求里生效)。ctrl.text 是服务端 datamodel.go 里固定的英文串("authentication failed"
等),ctrl.params 也没有 REST 层那种稳定的 reason 字段(已实测确认)。原来 doLogin 的 catch
直接把 err.message 原样传给 handleError,密码打错时用户看到的是英文 "authentication failed",
不是参考图要求的"账号或密码错误"。
新增 loginErrorMessage():已知的几个固定英文串映射成中文,未知文案按状态码兜底
(401/403 → 账号或密码错误)。
已用真实账号验证:错误密码显示"账号或密码错误",正确密码登录正常进入工作台。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
5bc3fee20b
commit
02a565b8e5
@@ -154,6 +154,26 @@ const SIDE_PANEL_VIEWS = ['acc_general','archive','blocked','contacts','cred','c
|
||||
const AUTH_FLOW_VIEWS = ['tenant', 'login', 'register', 'reset', 'cred',
|
||||
'enterprise-register', 'enterprise-feedback'];
|
||||
|
||||
// Tinode 原生 WS 登录失败走的是 {ctrl} 协议,不是 REST 层——im-api.js 里那张
|
||||
// REASON_MESSAGES 翻译表只在 REST 请求里生效,这条路径完全绕开它。ctrl.text 是服务端
|
||||
// datamodel.go 里固定的英文串(authentication failed / unknown authentication scheme 等),
|
||||
// ctrl.params 里也没有像 REST 层那样稳定的 reason 字段可用(已实测确认)。
|
||||
// 原来这里直接把 err.message 原样显示,登录密码打错用户看到的是英文 "authentication failed",
|
||||
// 不是参考图要求的"账号或密码错误"。
|
||||
const LOGIN_ERROR_TEXT_CN = {
|
||||
'authentication failed': '账号或密码错误',
|
||||
'authentication required': '请先登录',
|
||||
'unknown authentication scheme': '登录方式不受支持,请刷新页面重试',
|
||||
'policy violation': '当前操作不符合安全策略要求'
|
||||
};
|
||||
function loginErrorMessage(err) {
|
||||
const known = err && err.message && LOGIN_ERROR_TEXT_CN[err.message.trim().toLowerCase()];
|
||||
if (known) return known;
|
||||
// 未知文案时按状态码兜底,401/403 绝大多数场景就是账号或密码错误
|
||||
if (err && (err.code === 401 || err.code === 403)) return '账号或密码错误';
|
||||
return (err && err.message) || '登录失败,请重试';
|
||||
}
|
||||
|
||||
class TinodeWeb extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -953,7 +973,7 @@ class TinodeWeb extends React.Component {
|
||||
loadSpinnerVisible: false,
|
||||
autoLogin: autoLogin
|
||||
});
|
||||
this.handleError(err.message, 'err');
|
||||
this.handleError(loginErrorMessage(err), 'err');
|
||||
console.warn("Login failed", err);
|
||||
if (!autoLogin) {
|
||||
if (token) {
|
||||
|
||||
Reference in New Issue
Block a user