fix: 修复cas单点登录

This commit is contained in:
dj
2024-12-15 15:39:58 +08:00
parent 6e839fb255
commit 4fa288ce22
2 changed files with 94 additions and 94 deletions

View File

@@ -234,7 +234,7 @@ router.beforeEach(async (to, form, next) => {
query: query query: query
})) }))
// window.location.href = `${window.location.origin}/api/auth/cas/login` // window.location.href = `${window.location.origin}/api/auth/cas/login`
next({path: '/api/auth/cas/login'}) next({path: '/login'})
} }
} else { } else {
if (to.path === '/login' || to.path === '/cas/login') { if (to.path === '/login' || to.path === '/cas/login') {

View File

@@ -6,106 +6,106 @@ import {getToken, removeToken} from "./auth";
axios.defaults.headers['Content-Type'] = 'application/json' axios.defaults.headers['Content-Type'] = 'application/json'
const serveice = axios.create({ const serveice = axios.create({
baseURL: import.meta.env.VITE_BASE_URL, baseURL: import.meta.env.VITE_BASE_URL,
timeout: 6000 timeout: 6000
}) })
const axiosCanceler = new AxiosCanceler() const axiosCanceler = new AxiosCanceler()
serveice.interceptors.request.use(config => { serveice.interceptors.request.use(config => {
const ACCESS_TOKEN = getToken() || '' const ACCESS_TOKEN = getToken() || ''
if (ACCESS_TOKEN !== undefined && ACCESS_TOKEN !== '') { if (ACCESS_TOKEN !== undefined && ACCESS_TOKEN !== '') {
config.headers['Authorization'] = ACCESS_TOKEN config.headers['Authorization'] = ACCESS_TOKEN
} }
// 检查是否有重复请求, 有则取消掉 // 检查是否有重复请求, 有则取消掉
axiosCanceler.removePendingRequest(config) axiosCanceler.removePendingRequest(config)
// 将请求加入pendingMap // 将请求加入pendingMap
axiosCanceler.addPendingRequest(config) axiosCanceler.addPendingRequest(config)
return config return config
}, error => { }, error => {
Promise.reject(error) Promise.reject(error)
}) })
serveice.interceptors.response.use(response => { serveice.interceptors.response.use(response => {
axiosCanceler.removePendingRequest(response.config) axiosCanceler.removePendingRequest(response.config)
// console.log(response,"response") // console.log(response,"response")
//二进制数据直接返回 //二进制数据直接返回
if (response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer') { if (response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer') {
return response.data
}
// console.log("1")
return response.data
}, error => {
// console.log(error)
let response = error.response
if (!response) {
return Promise.reject()
}
const status = response.status;
if (!status) {
return Promise.reject()
}
switch (status) {
case 401:
// ElMessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
// confirmButtonText: '重新登录',
// cancelButtonText: '取消',
// type: 'warning',
// closeOnClickModal: false
// }).then(() => {
removeToken()
let path = window.location.pathname;
let query = window.location.search
sessionStorage.setItem('toView', JSON.stringify({
path: path,
query: query
}))
//todo 跳转登录页
window.location.href = `${window.location.origin}/api/auth/cas/login`
// })
return Promise.reject('会话已过期,请重新登录')
case 402:
break;
case 403:
ElNotification({
title: '系统提示',
message: response.data.msg,
type: 'warning'
})
break;
case 404:
ElNotification({
title: '系统提示',
message: '不存在的地址',
type: 'error'
})
break;
case 405:
ElNotification({
title: '系统提示',
message: '传输格式错误,请检查',
type: 'error'
})
break;
case 511:
ElNotification({
title: '系统提示',
message: '禁止访问',
type: 'error'
})
removeToken()
window.location = '/forbidden'
break;
case 500:
if (response.data) {
return response.data return response.data
} else { }
ElNotification({ // console.log("1")
title: '系统提示', return response.data
message: '系统未知错误', }, error => {
type: 'error' // console.log(error)
}) let response = error.response
break; if (!response) {
} return Promise.reject()
} }
return Promise.reject(error) const status = response.status;
if (!status) {
return Promise.reject()
}
switch (status) {
case 401:
// ElMessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
// confirmButtonText: '重新登录',
// cancelButtonText: '取消',
// type: 'warning',
// closeOnClickModal: false
// }).then(() => {
removeToken()
let path = window.location.pathname;
let query = window.location.search
sessionStorage.setItem('toView', JSON.stringify({
path: path,
query: query
}))
window.location = '/login'
// window.location.href = `${window.location.origin}/api/auth/cas/login`
// })
return Promise.reject('会话已过期,请重新登录')
case 402:
break;
case 403:
ElNotification({
title: '系统提示',
message: response.data.msg,
type: 'warning'
})
break;
case 404:
ElNotification({
title: '系统提示',
message: '不存在的地址',
type: 'error'
})
break;
case 405:
ElNotification({
title: '系统提示',
message: '传输格式错误,请检查',
type: 'error'
})
break;
case 511:
ElNotification({
title: '系统提示',
message: '禁止访问',
type: 'error'
})
removeToken()
window.location = '/forbidden'
break;
case 500:
if (response.data) {
return response.data
} else {
ElNotification({
title: '系统提示',
message: '系统未知错误',
type: 'error'
})
break;
}
}
return Promise.reject(error)
}) })
export default serveice export default serveice