uniapp登录拦截之uni.addInterceptor

发布于 2024-01-08  350 次阅读


1.创建一个permission.js文件

//设置白名单,白名单中的路径不进行拦截
const whiteList = ['pages/login/index','pages/home/index']

// 检查地址白名单
function checkWhite(url) {
	const path = url.split('?')[0]
	return whiteList.indexOf(path) !== -1
}
// 登录页面路径
const loginPage = "/pages/login/index"

//要拦截的跳转方式
const list = ['navigateTo', 'redirectTo', 'reLaunch','switchTab']
list.forEach(item => {
	uni.addInterceptor(item, {
		invoke(to) {
			//可以根据自己实际需求写
			if (uni.getStorageSync('token')) {
				if (to.url === loginPage) {
					uni.reLaunch({
						url: "/"
					})
				}
				return true
			} else {
				if (checkWhite(to.url)) {
					return true
				}
				uni.reLaunch({
					url: loginPage
				})
				return false
			}
		},
		fail(err) {
			console.log(err)
		}
	})
})

2.将permission.js文件引入到main.js中

//main.js
import Vue from 'vue'
import App from './App'
import './permission'

const app = new Vue({
  ...App
})

官方文档地址