uni-app/小程序中实现token过期重新登录并请求业务接口

2024.09.14 07:06

源码分享

在开发小程序时数据接口业务时,需要判断用户登录状态是否过期,如果过期了就需要重新登录然后继续请求业务接口。


新建一个封装请求接口文件,代码如下:

export default Iwecore {
	
	constructor(arg) {
		this.pendings = []
	}
	
	// 调用接口
	request(arg) {
		return new Promise((resolve, reject) => {
			uni.request({
				url,
				data,
				method,
				success: res => {
					if(res.data.code === 400) { // 用户登录状态过期,需要重新登录
						this.codeLogin()        // 调用登录方法
						this.pendings.push(() => {  //将需要重新请求的接口放到一个队列中
							resolve(this.request(arg))
						})
					} else {
						resolve(res)
					}
				},
				fail: reject
			})
		})
	}
	
	// Code登录
	codeLogin() {
		const _this = this
		
		uni.login({
			success(res) {
				uni.request({
					url,
					data,
					success: rows => {
						if(rows.data.code === 100) {
							uni.setStorageSync('token', rows.data.data)
							
							_this.pendings.map((callback) => { //将所有存储到队列中的请求重新执行
								callback()
							})
							_this.pendings = []   //清空请求队列
						}
					}
				})
			}
		})
	}
	
}


若有收获,就给个鼓励吧

我要:
蜀ICP备2025157245号Iwecore © 2025-2026. All Rights Reserved.