浏览代码

fix: 重构登录错误提示逻辑,彻底修复错误信息显示问题

- 后端:登录接口增加 @SaIgnore 注解,防止被 Sa-Token 拦截
- 后端:手机号不存在时返回用户名或密码错误,避免 NPE
- 前端:登录请求不再由拦截器重复提示,统一由 login.vue 处理
- 前端:兼容后端 message/msg 两种字段名

Co-Authored-By: Claude <noreply@anthropic.com>
skyline 1 月之前
父节点
当前提交
ab9b7a30c3

+ 1 - 4
admin-h5/src/pages/login/login.vue

@@ -143,10 +143,7 @@ const handleLogin = async () => {
     }
   } catch (error) {
     console.error('登录失败:', error)
-    // 业务错误已被 request 拦截器提示,仅网络异常时补充提示
-    if (!error.msg && !error.message) {
-      showToast('网络错误,请稍后重试')
-    }
+    showToast(error.msg || error.message || '网络错误,请稍后重试')
   } finally {
     loading.value = false
   }

+ 4 - 1
admin-h5/src/utils/request.js

@@ -48,7 +48,10 @@ export const request = (config) => {
           if (data.code === 200) {
             resolve(data)
           } else {
-            showToast(data.msg || data.message || '请求失败')
+            // 登录接口的错误由 login.vue 自行处理,不在此处提示
+            if (url !== '/admin-user/login') {
+              showToast(data.msg || data.message || '请求失败')
+            }
             reject(data)
           }
         } else if (statusCode === 401) {

+ 2 - 0
car-wash-admin/src/main/java/com/kym/admin/controller/AdminUserController.java

@@ -1,6 +1,7 @@
 package com.kym.admin.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.annotation.SaIgnore;
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.kym.common.R;
@@ -42,6 +43,7 @@ public class AdminUserController extends IController {
     }
 
     @SysLog("登录")
+    @SaIgnore
     @PostMapping("/login")
     R<?> adminLogin(@RequestBody JSONObject json) {
         return adminUserService.login(json.getString("mobilePhone"), json.getString("password"));