深浅模式
uniapp微信小程序新规定《游客模式》处理方法
更新: 2025/5/23 字数: 0 字 时长: 0 分钟
工具类添加跳转方法,并在 main.js 导入工具类跳转方法统一使用
javaScript
/**
* @description uni.navigateTo
* @param String url 跳转的页面路径
* @param Boolean isLogin 是否需要登录
*/
export function jumpPage(url, isLogin = false) {
let token = uni.getStorageSync('token')
if (url) {
if (isLogin && !token) {
uni.showModal({
content: "该模块需要登录,请前往登录后使用完整功能",
confirmText: "确认",
success: (res) => {
if (res.confirm) {
uni.reLaunch({
url: '/pages/tabbar/login'
})
}
}
})
return
}
uni.navigateTo({
url,
success(res) {
// console.log('跳转res',err);
},
fail(err) {
console.log('跳转err', err);
}
})
} else {
uni.showToast({
icon: "none",
title: '功能未开放'
})
}
}响应拦截器做处理,如果未登录则在响应拦截器,例如,后端返回 401
javaScript
if (data.code == 401) {
uni.clearStorageSync()
let exists = uni.getStorageSync('token_expired') || false
// 获取当前打开过的页面路由数组
let pages = getCurrentPages();
// 获取当前页面路由,即数组中最后一个元素的路由
let curRoute = pages[pages.length - 1].route;
console.log(curRoute);
let whiteUrl = ['pages/tabbar/mine']
if (!exists && !whiteUrl.includes(curRoute)) {
uni.setStorageSync('token_expired', true)
uni.showModal({
content: "该模块需要登录,请前往登录后使用完整功能",
confirmText: "确认",
success: (res) => {
if (res.confirm) {
uni.reLaunch({
url: '/pages/tabbar/login'
})
} else {
uni.reLaunch({
url: '/pages/tabbar/consumerHome'
})
}
}
})
}
}whiteUrl为本地白名单,用于处理,即使返回 401,页面也依然可以访问,这种情况通常出现在个人中心,在没有登录的情况下,onShow 生命周期获取用户信息 返回 401,如果不添加这个白名单,则依旧弹窗