Files
cunkebao_v3/Cunkebao/utils/auth.js

96 lines
1.8 KiB
JavaScript
Raw Normal View History

2025-03-24 10:19:21 +08:00
/**
* 认证相关工具函数
*/
const TOKEN_KEY = 'token';
const TOKEN_EXPIRES_KEY = 'token_expires';
const USER_INFO_KEY = 'user_info';
/**
* 设置Token
* @param {string} token 令牌
* @param {number} expires 过期时间()
*/
function setToken(token, expires = 7200) {
uni.setStorageSync(TOKEN_KEY, token);
// 计算过期时间点(当前时间 + 有效期)
const expiresTime = Math.floor(Date.now() / 1000) + expires;
uni.setStorageSync(TOKEN_EXPIRES_KEY, expiresTime);
}
/**
* 获取Token
* @returns {string} token值
*/
function getToken() {
return uni.getStorageSync(TOKEN_KEY);
}
/**
* 移除Token
*/
function removeToken() {
uni.removeStorageSync(TOKEN_KEY);
uni.removeStorageSync(TOKEN_EXPIRES_KEY);
}
/**
* 设置用户信息
* @param {Object} userInfo 用户信息
*/
function setUserInfo(userInfo) {
uni.setStorageSync(USER_INFO_KEY, JSON.stringify(userInfo));
}
/**
* 获取用户信息
* @returns {Object} 用户信息
*/
function getUserInfo() {
const userInfo = uni.getStorageSync(USER_INFO_KEY);
return userInfo ? JSON.parse(userInfo) : null;
}
/**
* 移除用户信息
*/
function removeUserInfo() {
uni.removeStorageSync(USER_INFO_KEY);
}
/**
* 移除所有认证信息
*/
function removeAll() {
removeToken();
removeUserInfo();
}
/**
* 判断是否已登录
* @returns {boolean} 是否已登录
*/
function isLogin() {
const token = getToken();
// 如果没有token直接返回未登录
if (!token) return false;
// 检查token是否过期
const expiresTime = uni.getStorageSync(TOKEN_EXPIRES_KEY) || 0;
const nowTime = Math.floor(Date.now() / 1000);
// 如果当前时间超过过期时间,则返回未登录
return nowTime < expiresTime;
}
export default {
setToken,
getToken,
removeToken,
setUserInfo,
getUserInfo,
removeUserInfo,
removeAll,
isLogin
};