import { clearCache } from './apiCache.js' const TOKEN_KEY = 'user_token' // 获取token export function getToken() { try { return uni.getStorageSync(TOKEN_KEY) || '' } catch (err) { console.error('获取token失败:', err) return '' } } // 保存token export function setToken(token) { try { if (token && typeof token === 'string') { uni.setStorageSync(TOKEN_KEY, token) } } catch (err) { console.error('保存token失败:', err) uni.showToast({ title: '登录状态保存失败', icon: 'none' }) } } // 删除token export function removeToken() { try { uni.removeStorageSync(TOKEN_KEY) } catch (err) { console.error('删除token失败:', err) } } // 判断是否登录 export function isLogin() { const token = getToken() return !!token && token.length > 0 } // 校验登录(未登录跳转) export function checkLogin() { if (!isLogin()) { const pages = getCurrentPages() const currentPage = pages[pages.length - 1] if (currentPage?.route !== 'pages/login/login') { uni.navigateTo({ url: '/pages/login/login' }) } return false } return true } // 退出登录 export function logout() { try { // 1. 删除token(保留原有核心逻辑) removeToken() clearCache() // 2. 清空用户信息缓存(解决用户名/头像/签名/邮箱残留) uni.removeStorageSync('userName') uni.removeStorageSync('userAvatar') uni.removeStorageSync('userSignature') uni.removeStorageSync('userEmail') // 如有其他登录相关缓存,继续补充: // uni.removeStorageSync('userInfo') // 3. 重置全局变量(如有) if (getApp().globalData?.userInfo) { getApp().globalData.userInfo = null } if (getApp().globalData?.token) { getApp().globalData.token = '' } if (getApp().globalData?.lastToken) { getApp().globalData.lastToken = '' } } catch (err) { console.error('清空登录缓存失败:', err) uni.showToast({ title: '清空登录状态失败', icon: 'none' }) return // 出错则终止,避免错误跳转 } // 4. 提示(保留原有) uni.showToast({ title: '已退出登录', icon: 'success', duration: 1500 }) // 5. 关键修改:用reLaunch替代switchTab,强制重启小程序 setTimeout(() => { uni.reLaunch({ url: '/pages/login/login', // 直接跳登录页,而非首页 fail: () => { // 兜底:重启失败则直接跳转 uni.redirectTo({ url: '/pages/login/login' }) } }) }, 1500) }