yuebonui-vue3/src/utils/request.js
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
import axios from 'axios'
import store from '@/store'
import { ElMessageBox, ElMessage } from 'element-plus'
import { getToken, saveRefreshtime, getTokenRefreshTime } from '@/utils/auth'
import { sign, GetRandomString } from '@/utils/yuebon'
// 是否显示重新登录
export let isRelogin = { show: false };
// create an axios instance
const service = axios.create({
baseURL: import.meta.env.VITE_APP_BASE_API,
timeout: 10000 // request timeout
})
service.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
// request拦截器
service.interceptors.request.use(
config => {
if (config.headers['Content-Type'] === undefined) { config.headers['Content-Type'] = 'application/json;charset=UTF-8' }
const token = getToken()
if (token) {
config.headers['Authorization'] = 'Bearer ' + token
}
// 如果接口需要签名, 则通过请求时,headers中传递sign参数true
const iSSign = config.headers['sign']
if (iSSign || iSSign === undefined) {
const timeStamp = new Date().getTime().toString().substring(0, 10)
const nonce = GetRandomString()
config.headers['appId'] = store.getters.appId
config.headers['nonce'] = nonce
config.headers['timeStamp'] = timeStamp
config.headers['signature'] = sign(config, nonce, timeStamp, store.getters.appSecret)
}
saveRefreshtime()
return config
},
error => {
// do something with request error
return Promise.reject(error)
}
)
/**
*
* 响应拦截
*/
service.interceptors.response.use(
response => {
const res = response.data
if (res.ErrCode !== '0') {
if (res.ErrCode === '401') { // token过期自动刷新token
var curTime = new Date()
var refreshtime = new Date(Date.parse(getTokenRefreshTime))
// 在用户操作的活跃期内
if (getTokenRefreshTime && (curTime <= refreshtime)) {
store.dispatch('ResetToken').then((res) => {
location.reload()
})
}
} else if (res.ErrCode === '403') {
后面还有 58 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。