vue.js - 在请求之前检查令牌是否仍然有效
问题描述
我正在使用 index.js 文件在 vue 应用程序中进行 api 调用。有没有办法在每次调用之前添加一个 catch 或 a 来查看我的令牌是否仍然很好,如果不是,让用户重定向到登录?
import axios from 'axios'
const client = axios.create({
baseURL : 'http://myapi.com/api/',
json: true
})
export default {
async execute(method, resource, data) {
const token = localStorage.getItem('token')
return client({
method,
url: resource,
data,
crossdomain: true ,
headers: { "Authorization": `Bearer ${token}` }
}).then(req => {
return req.data
})
},
getResponses() {
return this.execute('get', 'GetResponses')
},
getAll(){
return this.execute('get', 'GetAll')
},
解决方案
您可以使用拦截器,您可以在其中传递要在每个请求之前调用的函数:
const client = axios.create({ baseURL: 'http://myapi.com/api/', json: true });
client.interceptors.request.use((config) => {
const token = localStorage.getItem('token');
if (isTokenGood(token)) {
return config;
} else {
logout();
}
});
推荐阅读
- reactjs - React Apollo GraphQL 搜索/过滤器
- python - 在 python 中更新到现有配置文件部分的特定变量
- swift - 顶级 Bool 编码为数字属性列表片段。属性列表编码器
- physics - 什么是 mouseResponse 阈值,为什么要设置特定阈值?
- python - 删除列表中彼此接近的数字
- ruby - 如何使用传递给 Graphql ruby 字段的参数来转换结果?
- javascript - 如何在 amChart 中更改气球位置
- phaser-framework - 移动设备上的活动指针问题,使用 Phaser 3
- javascript - 将数据推送到对象/数组以供以后比较
- plone - 页面刷新时日期消失(NewsItem)