diff --git a/src/router/index.ts b/src/router/index.ts
index a2e4a9b..779960a 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -242,5 +242,19 @@ const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes,
});
-
+// ====== 添加全局前置守卫 ======
+router.beforeEach((to, from, next) => {
+ const token = localStorage.getItem("token"); // 或从 pinia/vuex 获取
+ const isLoginPage = to.path === "/login";
+ if (!token && !isLoginPage) {
+ // 没有 token 且不是去登录页 → 跳转登录
+ next({ path: "/login" });
+ } else if (token && isLoginPage) {
+ // 已登录却访问登录页 → 跳转首页(可选)
+ next({ path: "/layout/home" });
+ } else {
+ // 正常访问
+ next();
+ }
+});
export default router;
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 4ab6208..c291126 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -32,6 +32,7 @@ request.interceptors.request.use(
// 响应拦截器(统一处理错误、code 等)
request.interceptors.response.use(
(response) => {
+ console.log('响应数据:', response);
// 假设后端返回格式为 { code: 200, data: ..., message: '' }
const { code, data, message } = response.data;
console.log('请求成功:', data);
@@ -44,8 +45,8 @@ request.interceptors.response.use(
},
(error) => {
// 网络错误 or 超时等
- console.error('请求异常:', error.message);
- return Promise.reject(error);
+ console.error('请求异常:', error.response.data);
+ return Promise.reject(error.response.data);
}
);
diff --git a/src/views/login/component/account.vue b/src/views/login/component/account.vue
index a87a494..35d5cc3 100644
--- a/src/views/login/component/account.vue
+++ b/src/views/login/component/account.vue
@@ -4,13 +4,10 @@
-
-
+
-
登 录
@@ -23,7 +20,7 @@
import { reactive, ref, shallowRef } from 'vue';
import { useRouter } from 'vue-router';
import { login } from '@/apis/login';
-import type { FormInstance } from 'ant-design-vue';
+import { message, type FormInstance } from 'ant-design-vue';
const router = useRouter();
const formRef = ref();
@@ -60,23 +57,23 @@ const onFinish = async (values: FormState) => {
...values,
login_method: 'SMS'
};
-
- try {
- const res:any = await login(loginData);
- console.log('登录请求成功:', res);
- // 登录成功后,将token存入localStorage
- const token = res?.access_token;
-
- if (!token) {
- throw new Error('登录失败:未返回有效凭证');
+ formRef.value?.validateFields().then(async () => {
+ try {
+ const res: any = await login(loginData);
+ console.log('登录请求成功:', res);
+ // 登录成功后,将token存入localStorage
+ const token = res?.access_token;
+ if (!token) {
+ throw new Error('登录失败:未返回有效凭证');
+ }
+ localStorage.setItem('token', token);
+ router.push('/layout/home');
+ } catch (error: any) {
+ console.error('登录请求失败:', error);
+ message.error(error || '用户名或密码错误');
}
+ });
- localStorage.setItem('token', token);
- router.push('/layout/home');
- } catch (error: any) {
- console.error('登录请求失败:', error);
- setCodeError(error.message || '用户名或密码错误');
- }
};
const onFinishFailed = (errorInfo: any) => {
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index fde78c5..aa9ec4b 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -7,7 +7,7 @@