首次提交:初始化项目代码
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user