大屏项目初始化

This commit is contained in:
2026-03-01 23:29:36 +08:00
parent 86c1e58644
commit 7d3d82c0ab

View File

@@ -10,13 +10,19 @@ const service = axios.create({
} }
}) })
const WHITE_LIST_PATHS = ['/userLogin', '/register']; const WHITE_LIST_PATHS = ['userLogin', 'register'];
const isInWhiteList = (url) => {
if (!url) return false;
const urlPath = url.split('?')[0];
const apiName = urlPath.substring(urlPath.lastIndexOf('/') + 1);
return WHITE_LIST_PATHS.includes(apiName);
};
const checkTokenExist = (config) => { const checkTokenExist = (config) => {
if (WHITE_LIST_PATHS.some(path => config.url?.includes(path))) { if (isInWhiteList(config.url)) {
return true; return true;
} }
// 非白名单接口检查token
const token = localStorage.getItem('token'); const token = localStorage.getItem('token');
if (!token) { if (!token) {
handleLoginExpired(); handleLoginExpired();
@@ -29,15 +35,18 @@ const checkTokenExist = (config) => {
service.interceptors.request.use( service.interceptors.request.use(
(config) => { (config) => {
if (!checkTokenExist(config)) { if (!checkTokenExist(config)) {
if (!isInWhiteList(config.url)) {
return Promise.reject(new Error('未检测到登录凭证,请先登录')); return Promise.reject(new Error('未检测到登录凭证,请先登录'));
} }
return Promise.resolve(config);
}
return config return config
}, },
(error) => { (error) => {
console.error('【请求拦截器错误】', error); console.error('【请求拦截器错误】', error);
return Promise.reject(error) return Promise.reject(error);
} }
) );
service.interceptors.response.use( service.interceptors.response.use(
(response) => { (response) => {
@@ -58,6 +67,11 @@ service.interceptors.response.use(
return res.data; return res.data;
}, },
(error) => { (error) => {
if (error.config && isInWhiteList(error.config.url)) {
ElMessage.error(error.response?.data?.msg || '登录失败,请检查账号密码');
return Promise.reject(error);
}
if (isLoginExpiredError(error)) { if (isLoginExpiredError(error)) {
handleLoginExpired(); handleLoginExpired();
return Promise.reject(new Error('登录状态已失效,请重新登录')); return Promise.reject(new Error('登录状态已失效,请重新登录'));
@@ -82,7 +96,7 @@ service.interceptors.response.use(
ElMessage.error(error.response.data?.msg || error.message || '接口请求失败'); ElMessage.error(error.response.data?.msg || error.message || '接口请求失败');
return Promise.reject(error); return Promise.reject(error);
} }
) );
function isLoginExpiredError(error) { function isLoginExpiredError(error) {
if (error.response && error.response.status === 401) { if (error.response && error.response.status === 401) {