【Uniapp】小程序携带Token请求接口+无感知登录方案2.0
// 导入配置文件
import config from '@/common/config.js';
// 获取token函数
function getToken() {
// 从storage中获取token
const token = uni.getStorageSync('token');
// 如果token不存在,则返回空字符串
return token || '';
}
// 请求拦截器
uni.addInterceptor('request', {
invoke(args) {
// 判断是否为登录接口或者不需要token的接口
if (!args.url.includes('login') && !args.noToken) {
// 给所有请求添加token
args.header = {
...args.header,
'Authorization': `Bearer ${getToken()}`,
};
}
}
});
// 响应拦截器
uni.addInterceptor('response', {
invoke(args) {
// 判断token是否过期或无效,进行处理
if (args.statusCode === 401) {
// 清除token,进行重新登录
uni.removeStorage({
key: 'token',
success: function() {
// 跳转到登录页面
uni.navigateTo({
url: '/pages/login/login',
});
},
});
}
}
});
这段代码首先导入了配置文件,定义了获取token的函数。然后使用uni.addInterceptor注册了请求和响应拦截器,在请求拦截器中,根据配置给所有请求添加token;在响应拦截器中,如果响应状态码为401,则清除token并重定向到登录页面。这样就实现了在UniApp小程序中使用token进行接口请求的无感知登录方案。
评论已关闭