Kaynağa Gözat

登录错误信息没提示 修复

pm 5 ay önce
ebeveyn
işleme
63e58d3110
1 değiştirilmiş dosya ile 28 ekleme ve 1 silme
  1. 28 1
      src/views/Login.tsx

+ 28 - 1
src/views/Login.tsx

@@ -5,6 +5,7 @@ import { Shield, Zap, Lock, User, Eye, EyeOff, ArrowRight, Activity, Radio, Laye
 import { loginApi } from '../api';
 import type { LoginFormParams } from '../api/Login';
 import { toast } from 'sonner';
+import { Toaster } from 'sonner';
 import { env } from '../utils/env';
 import * as authUtil from '../utils/auth';
 import { setPermissionInfo } from '../utils/permission';
@@ -317,7 +318,32 @@ export default function Login() {
       }, 500);
     } catch (error: any) {
       toast.dismiss('loading');
-      toast.error(error.message || t('common.error') || '登录失败');
+      
+      // axios拦截器已经将 data.msg 提取到 error.message 中
+      // 优先使用 error.message,然后尝试从 error.response.data 获取
+      let errorMessage = '登录失败';
+      
+      // 优先使用 error.message(axios拦截器已经提取了msg)
+      if (error?.message && error.message.trim() !== '') {
+        errorMessage = error.message;
+      } else if (error?.response?.data) {
+        // 如果 error.message 为空,尝试从 response.data 中获取
+        errorMessage = error.response.data.msg || 
+                      error.response.data.message || 
+                      error.response.data.error || 
+                      errorMessage;
+      } else {
+        // 使用默认错误消息
+        errorMessage = t('common.error') || '登录失败';
+      }
+      
+      // 确保错误消息不为空
+      if (!errorMessage || errorMessage.trim() === '') {
+        errorMessage = t('common.error') || '登录失败';
+      }
+      
+      // 显示错误提示
+      toast.error(errorMessage);
     } finally {
       setIsLoading(false);
     }
@@ -1056,6 +1082,7 @@ export default function Login() {
           </div>
         </div>
       </div>
+      <Toaster position="top-center" richColors />
     </div>
   );
 }