@tmsfe/tms-core 0.0.218 → 0.0.220

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tmsfe/tms-core",
3
- "version": "0.0.218",
3
+ "version": "0.0.220",
4
4
  "description": "tms运行时框架",
5
5
  "repository": {
6
6
  "type": "git",
package/src/request.js CHANGED
@@ -673,16 +673,23 @@ async function loginRefresh() {
673
673
  if (!refreshPromise) {
674
674
  // 调用runtime的login方法刷新token
675
675
  const { tms } = getApp();
676
- wx.tmsLoginPromise = undefined;
677
676
  // 刷新登录态时清除缓存,确保重新走登录流程
678
677
  storage.removeItem('sinanCacheUserInfo');
678
+ wx.tmsLoginPromise = undefined;
679
679
  try {
680
680
  refreshPromise = tms.login();
681
681
  const loginInfo = await refreshPromise;
682
- // 刷新登录后写缓存
683
- storage.setItem('sinanCacheUserInfo', loginInfo);
684
- lastRefreshTime = Date.now(); // 记录最后成功刷新时间
685
- // 登录成功,清除Promise
682
+ // 防止脏数据写入缓存:校验 token 有效性
683
+ if (loginInfo?.token && !loginInfo.token.includes('login-fail')) {
684
+ storage.setItem('sinanCacheUserInfo', loginInfo);
685
+ // 显式更新为已resolve的Promise,确保后续请求立即获得最新鉴权信息
686
+ wx.tmsLoginPromise = Promise.resolve(loginInfo);
687
+ lastRefreshTime = Date.now(); // 记录最后成功刷新时间
688
+ } else {
689
+ // token 无效,清除可能存在的脏缓存
690
+ storage.removeItem('sinanCacheUserInfo');
691
+ }
692
+ // 登录完成,清除Promise
686
693
  refreshPromise = undefined;
687
694
  } catch (err) {
688
695
  // 登录失败重试
@@ -62,6 +62,8 @@ const loginFn = async () => {
62
62
  loginTime: userInfo.loginTime,
63
63
  localTime: Date.now(),
64
64
  };
65
+ // 缓存登录信息
66
+ wx.setStorageSync('sinanCacheUserInfo', userInfo);
65
67
  }
66
68
  } catch (e) {}
67
69
  resolve(userInfo);