import { defineStore } from 'pinia' import { ref } from 'vue' import { STORAGE_KEYS } from '@/constants/storage-keys' import { setTokenData, getToken, removeToken } from '@/utils/storage' /** 登录状态 */ export const useTokenStore = defineStore(STORAGE_KEYS.TOKEN, () => { // 从本地存储获取token const token = ref(getToken() || null) const isLogin = ref(!!token.value) /** 设置token并保存到本地 */ const setToken = newToken => { token.value = newToken isLogin.value = true setTokenData(newToken) } /** 清除token */ const clearToken = () => { token.value = null isLogin.value = false removeToken() } /** 检查token是否有效(可扩展过期时间判断) */ const checkToken = () => { // 简单判断:token存在且不为空 return !!token.value } /** 验证token是否过期(实际项目中可添加过期时间判断) */ const isTokenExpired = () => { // 示例:如果token中包含过期时间,这里可以判断 // 例如:const expireTime = parseInt(token.value.split('.')[1]); // return Date.now() > expireTime * 1000; return false // 默认不过期 } return { token, isLogin, setToken, clearToken, checkToken, isTokenExpired } })