未阻止 Uniapp 小程序路由拦截器、导航器
最编程
2024-04-12 07:04:11
...
import store from "./store";
let config = {
//白名单页面
whiteList: [
"/pages/login/login",
"/pages/guides/guides",
"/pages/index/index"
],
//登录页
loginPage: "/pages/login/login"
}
export default async function interceptor() {
/**
* 页面跳转拦截器
*/
let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
// console.log("list",list);
list.forEach(item => {//遍历各个方式,进行拦截
uni.addInterceptor(item, {
invoke(e) { // 调用前拦截
//这里token的获取,看各人
const token = store.state.user.token
//获取要跳转的页面路径(url去掉"?"和"?"后的参数)
let url = e.url.split('?')[0];
let notNeed = config.whiteList.includes(url)
// 如果在whiteList里面就不需要登录
if (notNeed) {
return e
} else {
//需要登录的页面
if (!token) {
uni.navigateTo({
url: config.loginPage
})
return false
} else {
return e
}
}
},
fail(err) { // 失败回调拦截
console.log(err);
}
})
})
}