登录界面已完成

This commit is contained in:
2026-02-06 15:07:55 +08:00
parent 5ac365b45e
commit 6e085185db
11 changed files with 1076 additions and 442 deletions

45
src/utils/request.js Normal file
View File

@@ -0,0 +1,45 @@
import axios from 'axios'
import { ElMessage } from 'element-plus'
import router from '@/router'
const service = axios.create({
baseURL: '/api',
timeout: 10000
})
// 请求拦截器
service.interceptors.request.use(
config => {
// 自动获取 Token(兼顾两种存储方式)
const token = localStorage.getItem('token') || sessionStorage.getItem('token')
if (token) {
config.headers['Authorization'] = `Bearer ${token}`
}
return config
},
error => Promise.reject(error)
)
// 响应拦截器
service.interceptors.response.use(
response => response.data,
error => {
// 这里的 error.response.data 就是你发给我的那一长串报错 JSON
if (error.response && error.response.status === 500) {
const msg = error.response.data.message;
if (msg === 'The token is expired.') {
// 关键:发现过期,立刻清空!
localStorage.clear();
sessionStorage.clear();
ElMessage.error('会话已过期,请重新登录');
// 此时再跳转,守卫检查没有 token,就能进 /login 了
router.push('/login');
}
}
return Promise.reject(error);
}
)
export default service