uniapp全局拦截401跳转到登录页

1.使用uniapp开发小程序时,有时候后端接口返回的状态码是401,也就是未登录状态,这时候我们需要拦截401并让它跳到登录页,但是在封装的请求中直接判断状态码为401时弹出uni.showModal点击确定跳转时微信开发工具显示正常,但是真机上就重复弹出了很多个(假如你当前页面请求了5个接口,那就会有5个窗口,你需要点击5下才能关闭),这时我们的想法是只让他显示一次,解决方法如下:
//在main.js中加入以下代码
uni.addInterceptor('request', {
	success(args) {
		let isLogin = uni.getStorageSync('isLogin')  //isLogin是你调用登录接口成功后保存的一个状态,我在这里调用成功后设置成了isLogin="yes"
		if (args.statusCode == 401 && isLogin == 'yes') {
			uni.showModal({
				title: "温馨提示",
				content: '登录已过期,重新登录',
				cancelText: "取消",
				confirmText: "确定",
				confirmColor: "#815EC9",
				showCancel: false,
				success: (res) => {
					if (res.confirm) {
						uni.redirectTo({
							url: '/pages/login/login'  //跳到登录页
						})
					} else if (res.cancel) {}
				}
			});
			//这句代码很重要,是为了防止401后再继续调用接口
			uni.setStorageSync('isLogin', 'no')

		}
	},
	fail(err) {
		console.log('失败')
	}
})

亲测有效,也是目前自己写的最好的办法,帮到你了就关注点赞哦,分享每一点每一滴,哦里给!!!!

你可能感兴趣的:(小程序,微信小程序)