diff --git a/common/http.interceptor.js b/common/http.interceptor.js index e5ba704..a80b05f 100644 --- a/common/http.interceptor.js +++ b/common/http.interceptor.js @@ -10,7 +10,7 @@ const install = (Vue, vm) => { // baseUrl: 'http://115.238.47.235:8993', // 如果将此值设置为true,拦截回调中将会返回服务端返回的所有数据response,而不是response.data // 设置为true后,就需要在this.$u.http.interceptor.response进行多一次的判断,请打印查看具体值 - // originalData: true, + originalData: true, // 设置自定义头部content-type // header: { // 'content-type': 'xxx' @@ -47,10 +47,19 @@ const install = (Vue, vm) => { // 响应拦截,判断状态码是否通过 Vue.prototype.$u.http.interceptor.response = (res) => { uni.hideLoading(); + + // 检查是否为401未授权错误 + if (res.statusCode === 401) { + handleAuthError(vm); + return false; + } + + return res.data; + if (res.succeed == true || res.success == true) { // return res.data || res; return res; - } else { + } else { // uni.showToast({ // title: res.error, // duration: 2000, @@ -59,13 +68,31 @@ const install = (Vue, vm) => { // uni.navigateTo({ // url: "/pages/login/login/login", // }); - return res; - // return false; - + + return false; } } } +// 提取处理401错误的函数 +function handleAuthError(vm) { + vm.$u.vuex("vuex_user", ""); + vm.$u.vuex("vuex_token", ""); + uni.clearStorage(); + + // 显示提示 + uni.showToast({ + title: '登录已过期,请重新登录!', + icon: 'none', + duration: 1500 + }); + + // 延迟跳转到登录页 + uni.reLaunch({ + url: '/pages/login/login/index' + }); +} + export default { install }