import { defineStore } from 'pinia'; import { ref } from 'vue'; import { STORAGE_KEYS } from '@/constants/storageKeys'; import { 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; setToken(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 }; })