uniapp设置请求拦截,如果401 token身份过期,其他接口不再执行
时间: 2024-10-22 21:30:08 浏览: 21
在UniApp中,为了全局设置请求拦截并处理像401 Token过期这样的错误,你可以利用Vue.js的`axios`插件或者UniApp提供的内置API来进行。这里是一个基本的示例:
首先,确保已经在项目中安装了axios库(如果尚未安装,可以运行`uni plugin add axios`命令)。然后,在项目的入口文件(如main.js)或者单独的api模块中,配置一个拦截器:
```javascript
import axios from 'axios';
import store from '@/store';
axios.interceptors.response.use(
(response) => {
// 如果响应状态码不是401,直接返回
if (response.status !== 401) {
return response;
}
// 对于401错误,检查token是否过期,一般会从store或vuex中获取用户信息
const user = store.state.userInfo; // 假设用户信息存储在Vuex的状态里
// 如果token已过期,通常需要发送新的登录请求,更新token,或者跳转到登录页
if (!user || !user.token) {
// 登录失败,可以选择抛出异常、提示用户或重定向
throw new Error('Token expired, please login again.');
}
// 如果token未过期,但服务端认为过期,那可能是服务器的问题,需要处理这种情况
else {
throw new Error(response.data.message); // 抛出自定义错误,显示服务端返回的消息
}
},
(error) => {
// 拦截器处理失败,可以在这里统一处理错误,比如记录日志、显示友好的提示等
console.error('Request failed with error', error);
return Promise.reject(error);
}
);
// 现在所有发起的axios请求都会经过这个拦截器处理
```
这样,当遇到401状态时,就会触发这个拦截器,你可以根据业务逻辑更新token或引导用户重新登录。
阅读全文