.
This commit is contained in:
88
src/js/core/user-cache.js
Normal file
88
src/js/core/user-cache.js
Normal file
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* 用户缓存管理
|
||||
* 负责用户登录状态的本地存储和管理
|
||||
*/
|
||||
|
||||
import { CACHE_CONFIG } from '../config/index.js';
|
||||
|
||||
export class UserCache {
|
||||
/**
|
||||
* 保存用户登录状态
|
||||
* @param {Object} userData - 用户数据
|
||||
* @param {string} userData.customerid - 客户ID
|
||||
* @param {string} userData.mobile - 手机号
|
||||
* @param {string} userData.sessionid - 会话ID
|
||||
* @param {string} userData.loginPhone - 登录时使用的手机号
|
||||
* @param {Object} userData.formData - 表单数据
|
||||
*/
|
||||
static saveUserSession(userData) {
|
||||
const sessionData = {
|
||||
// 兼容 customerid 和 customerId 两种字段名
|
||||
customerid: userData.customerid || userData.customerId,
|
||||
mobile: userData.mobile,
|
||||
// 兼容 sessionid 和 sessionId 两种字段名
|
||||
sessionid: userData.sessionid || userData.sessionId,
|
||||
loginTime: Date.now(),
|
||||
loginPhone: userData.loginPhone || '', // 保存登录时使用的手机号
|
||||
formData: userData.formData || null // 保存表单数据
|
||||
};
|
||||
|
||||
console.log('[UserCache] 保存登录状态:', sessionData);
|
||||
localStorage.setItem(CACHE_CONFIG.KEYS.USER_SESSION, JSON.stringify(sessionData));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户登录状态
|
||||
* @returns {Object|null} - 用户会话数据,如果不存在或已过期则返回 null
|
||||
*/
|
||||
static getUserSession() {
|
||||
try {
|
||||
const sessionStr = localStorage.getItem(CACHE_CONFIG.KEYS.USER_SESSION);
|
||||
if (!sessionStr) return null;
|
||||
|
||||
const sessionData = JSON.parse(sessionStr);
|
||||
const now = Date.now();
|
||||
|
||||
// 检查缓存是否过期
|
||||
if (now - sessionData.loginTime > CACHE_CONFIG.USER_SESSION_DURATION) {
|
||||
this.clearUserSession();
|
||||
return null;
|
||||
}
|
||||
|
||||
return sessionData;
|
||||
} catch (error) {
|
||||
console.error('[UserCache] 获取用户缓存失败:', error);
|
||||
this.clearUserSession();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除用户登录状态
|
||||
*/
|
||||
static clearUserSession() {
|
||||
localStorage.removeItem(CACHE_CONFIG.KEYS.USER_SESSION);
|
||||
console.log('[UserCache] 已清除用户登录状态');
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户是否已登录
|
||||
* @returns {boolean} - 是否已登录
|
||||
*/
|
||||
static isLoggedIn() {
|
||||
const session = this.getUserSession();
|
||||
return session !== null && (session.sessionid || session.loginPhone);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取脱敏的手机号
|
||||
* @returns {string|null} - 脱敏后的手机号
|
||||
*/
|
||||
static getMaskedPhone() {
|
||||
const session = this.getUserSession();
|
||||
if (!session || !session.loginPhone) return null;
|
||||
|
||||
const phone = session.loginPhone;
|
||||
return phone.substring(0, 3) + '****' + phone.substring(7);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user