common/appInit.js内新建拦截器
uni.addInterceptor('navigateTo', {
invoke(args) {
let redirectUrl = ''
if (uni.getStorageSync('uniIdRedirectUrl2')) {
redirectUrl = '?uniIdRedirectUrl=' + decodeURIComponent(uni.getStorageSync(
'uniIdRedirectUrl2'))
console.log("缓存页 1->" + uni.getStorageSync('uniIdRedirectUrl2'))
} else {
console.log("uniIdRedirectUrl不存在")
}
let pages = getCurrentPages() //获取加载的页面
let newPages = pages.map(item => item.route)
let nowUrl = args.url //这个是当前页面
let lastPage = newPages.length && newPages[newPages.length - 1] //这个是上一个页面
//当 当前页面不是登录页时,缓存当前页 当 当前页是登录页,上一页不是登录页时,缓存上一页
if (!nowUrl.includes("/login")) {
uni.setStorageSync('uniIdRedirectUrl2', '/' + nowUrl);
} else if (!lastPage.includes("/login")) {
uni.setStorageSync('uniIdRedirectUrl2', '/' + lastPage);
}
console.log("缓存页 2->" + uni.getStorageSync('uniIdRedirectUrl2'))
//当 当前页是登录页 且页面不含上页信息时 加上返回页地址
if (nowUrl.includes("/login") && !nowUrl.includes("?uniIdRedirectUrl=")) {
console.log("遇到login拼接新地址->" + uni.getStorageSync('uniIdRedirectUrl2'))
args.url = nowUrl + redirectUrl
}
},
success(args) {
console.log("success", args)
},
fail(err) {
console.log('interceptor-fail', err)
},
complete(res) {
console.log('interceptor-complete', res)
}
})
此方法用户名密码登录时有效,微信登录还没找到问题出在哪?有路过的高手请指教一下,免得我们新人苦苦摸索,谢谢啦
0 个评论
要回复文章请先登录或注册