小程序中存储时间过期验证的方法

存储时间并判断是否过期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 默认一天过期(单位:毫秒)
function storeTime(KeyName, startTime = 86400000) {
const old = wx.getStorageSync(KeyName); // 之前存的过期时间
const current = Date.now(); // 当前时间戳

// 如果已经有值,并且当前时间还没到过期时间,说明没过期,直接返回 false
if (old && current < old) return false;

// 否则重新设置过期时间(当前时间 + 有效时长)
wx.setStorageSync(KeyName, current + startTime);

// true:之前存过且已经过期;"OneTime":第一次进入(之前没存过)
return old ? true : 'OneTime';
}

export default storeTime;

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 例如:校验 user_token 是否过期
const val = storeTime('user_tokenTime');

// 第一次进入
if (val === 'OneTime') {
// 第一次逻辑,例如去请求登录接口
}

// 已过期
if (val === true) {
// 过期逻辑,例如重新获取 token
}

// val 为 false 时表示还在有效期内,无需处理