H5端手动在地址栏更改路由地址uni.addInterceptor没有触发,以及首次进入的页面也不会触发,这个怎么解决
const whiteList = ['/pages/login/login']
const list = ["navigateTo", "redirectTo", "reLaunch"]
function hasPermission(url) {
// 在白名单中或有token,直接跳转
if (whiteList.indexOf(url) !== -1 || uni.getStorageSync("token")) {
return true;
}
return false;
}
list.forEach((item) => {
uni.addInterceptor(item, {
// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
invoke(e) {
let path = e.url.split('?')[0]
if (hasPermission(path) == false) {
// 将用户的目标路径保存下来
// 这样可以实现 用户登录之后,直接跳转到目标页面
uni.navigateTo({
url: "/pages/login/login",
});
return false;
}
return true;
}
});
})
DC_HL (作者)
放下面一条回复里面了,demo在附件,问题描述,麻烦看下
2025-04-30 20:40