| | |
| | | return whiteList.indexOf(path) !== -1 |
| | | } |
| | | |
| | | // 保存目标页面URL,用于登录后跳转 |
| | | function saveTargetUrl(url) { |
| | | try { |
| | | // 如果URL已经是/pages/login或/pages/qylogin,则不保存 |
| | | if (url && !url.startsWith('/pages/login') && !url.startsWith('/pages/qylogin')) { |
| | | uni.setStorageSync('targetUrl', url) |
| | | } |
| | | } catch (e) { |
| | | console.error('保存目标URL失败:', e) |
| | | } |
| | | } |
| | | |
| | | // 页面跳转验证拦截器 |
| | | let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"] |
| | | list.forEach(item => { |
| | | uni.addInterceptor(item, { |
| | | invoke(to) { |
| | | if (getToken()) { |
| | | // 已登录 |
| | | if (to.url === loginPage) { |
| | | // 如果已经登录还要访问登录页,直接跳转到首页 |
| | | uni.reLaunch({ url: "/" }) |
| | | return false |
| | | } |
| | | return true |
| | | } else { |
| | | // 未登录 |
| | | if (checkWhite(to.url)) { |
| | | // 白名单页面可以直接访问 |
| | | return true |
| | | } |
| | | |
| | | // 保存当前要访问的页面作为登录后跳转的目标 |
| | | saveTargetUrl(to.url) |
| | | |
| | | // 跳转到登录页面 |
| | | uni.reLaunch({ url: loginPage }) |
| | | return false |
| | | } |