//后端给了两个token和refreshtoken 将两个token存到本地
if (statusCode === 401) {
//获取小程序实力
const app = getApp()
//如果refreshtoken也过期了就打回到登录页
if (config.url.includes('/refreshToken')) {
// 这一次的 401 是由于调用刷新 token 的接口的时候,refreshToken 过期导致的
//是一个访问页面历史记录的数组
const currentPages = getCurrentPages()
// 数组的长度-1就是当前页面
const currentPage = currentPages[currentPages.length - 1]
// currentPage.route 当前页面的地址
return wx.redirectTo({
//把当前页面带过去,好再回到当前页面
url: `/pages/login/index?redirectUrl=/${currentPage.route}`,
})
}
// token 过期了,用 refreshToken 换取新的 token
const {
data
} = await wx.http({
url: '/refreshToken',
method: 'POST',
header: {
Authorization: app.refresh_token
}
})
// data里面包含了 token 和 refresh_token,只需要再次调用 app.setToken 方法进行存储
app.setToken(data.token, data.refreshToken)
//config里面就有原本发的请求方法只不过token是坏的需要一个新的token
console.log(config);
const allConfig = Object.assign({}, config, {
header: {
Authorization: 'Bearer ' + data.token
}
})
return wx.http(allConfig)
}
小程序如何实现无感刷新token
最新推荐文章于 2024-11-29 13:50:05 发布