@kevisual/api 0.0.58 → 0.0.60

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.
@@ -172,13 +172,19 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
172
172
  * @param refreshToken 刷新token,如果不传,则从缓存中获取
173
173
  * @returns
174
174
  */
175
- refreshLoginUser(refreshToken?: string): Promise<any>;
175
+ refreshLoginUser(opts?: {
176
+ refreshToken?: string;
177
+ accessToken?: string;
178
+ }): Promise<any>;
176
179
  /**
177
180
  * 刷新token
178
181
  * @param refreshToken
179
182
  * @returns
180
183
  */
181
- queryRefreshToken(refreshToken?: string): Promise<any>;
184
+ queryRefreshToken(opts?: {
185
+ refreshToken?: string;
186
+ accessToken?: string;
187
+ }): Promise<any>;
182
188
  /**
183
189
  * 检查401错误,并刷新token, 如果refreshToken存在,则刷新token, 否则返回401
184
190
  * 拦截请求,请使用run401Action, 不要直接使用 afterCheck401ToRefreshToken
@@ -312,6 +312,16 @@ class BaseQuery {
312
312
  }
313
313
 
314
314
  // query/query-login/login-cache.ts
315
+ var defaultCacheData = {
316
+ loginUsers: [],
317
+ user: undefined,
318
+ id: undefined,
319
+ accessToken: undefined,
320
+ refreshToken: undefined,
321
+ accessTokenExpiresIn: undefined,
322
+ createdAt: undefined
323
+ };
324
+
315
325
  class LoginCacheStore {
316
326
  cache;
317
327
  name;
@@ -321,13 +331,7 @@ class LoginCacheStore {
321
331
  throw new Error("cache is required");
322
332
  }
323
333
  this.cache = opts.cache;
324
- this.cacheData = {
325
- loginUsers: [],
326
- user: undefined,
327
- id: undefined,
328
- accessToken: undefined,
329
- refreshToken: undefined
330
- };
334
+ this.cacheData = { ...defaultCacheData };
331
335
  this.name = opts.name;
332
336
  }
333
337
  async setValue(value) {
@@ -337,27 +341,13 @@ class LoginCacheStore {
337
341
  }
338
342
  async delValue() {
339
343
  await this.cache.del();
340
- this.cacheData = {
341
- loginUsers: [],
342
- user: undefined,
343
- id: undefined,
344
- accessToken: undefined,
345
- refreshToken: undefined
346
- };
344
+ this.cacheData = { ...defaultCacheData };
347
345
  }
348
346
  getValue() {
349
347
  return this.cache.get(this.name);
350
348
  }
351
349
  async init() {
352
- const defaultData = {
353
- loginUsers: [],
354
- user: undefined,
355
- id: undefined,
356
- accessToken: undefined,
357
- refreshToken: undefined,
358
- accessTokenExpiresIn: undefined,
359
- createdAt: undefined
360
- };
350
+ const defaultData = { ...this.cacheData };
361
351
  if (this.cache.init) {
362
352
  try {
363
353
  const cacheData = await this.cache.init();
@@ -370,18 +360,18 @@ class LoginCacheStore {
370
360
  }
371
361
  return this.cacheData;
372
362
  }
373
- async setLoginUser(user) {
374
- const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
363
+ async setLoginUser(loginUser) {
364
+ const has = this.cacheData.loginUsers.find((u) => u.id === loginUser.id);
375
365
  if (has) {
376
- this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
377
- }
378
- this.cacheData.loginUsers.push(user);
379
- this.cacheData.user = user.user;
380
- this.cacheData.id = user.id;
381
- this.cacheData.accessToken = user.accessToken;
382
- this.cacheData.refreshToken = user.refreshToken;
383
- this.cacheData.accessTokenExpiresIn = user.accessTokenExpiresIn;
384
- this.cacheData.createdAt = user.createdAt;
366
+ this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== loginUser.id);
367
+ }
368
+ this.cacheData.loginUsers.push(loginUser);
369
+ this.cacheData.user = loginUser.user;
370
+ this.cacheData.id = loginUser.id;
371
+ this.cacheData.accessToken = loginUser.accessToken;
372
+ this.cacheData.refreshToken = loginUser.refreshToken;
373
+ this.cacheData.accessTokenExpiresIn = loginUser.accessTokenExpiresIn;
374
+ this.cacheData.createdAt = loginUser.createdAt;
385
375
  await this.setValue(this.cacheData);
386
376
  }
387
377
  getCurrentUser() {
@@ -417,22 +407,22 @@ class LoginCacheStore {
417
407
  if (has) {
418
408
  this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
419
409
  }
420
- this.cacheData.user = undefined;
421
- this.cacheData.id = undefined;
422
- this.cacheData.accessToken = undefined;
423
- this.cacheData.refreshToken = undefined;
424
- this.cacheData.accessTokenExpiresIn = undefined;
425
- this.cacheData.createdAt = undefined;
410
+ const hasOther = this.cacheData.loginUsers.length > 0;
411
+ const current = this.cacheData.loginUsers[this.cacheData.loginUsers.length - 1];
412
+ if (hasOther && current) {
413
+ this.cacheData.user = current.user;
414
+ this.cacheData.id = current.id;
415
+ this.cacheData.accessToken = current.accessToken;
416
+ this.cacheData.refreshToken = current.refreshToken;
417
+ this.cacheData.accessTokenExpiresIn = current.accessTokenExpiresIn;
418
+ this.cacheData.createdAt = current.createdAt;
419
+ } else {
420
+ this.cacheData = { ...defaultCacheData };
421
+ }
426
422
  await this.setValue(this.cacheData);
427
423
  }
428
424
  async clearAll() {
429
- this.cacheData.loginUsers = [];
430
- this.cacheData.user = undefined;
431
- this.cacheData.id = undefined;
432
- this.cacheData.accessToken = undefined;
433
- this.cacheData.refreshToken = undefined;
434
- this.cacheData.accessTokenExpiresIn = undefined;
435
- this.cacheData.createdAt = undefined;
425
+ this.cacheData = { ...defaultCacheData };
436
426
  await this.setValue(this.cacheData);
437
427
  }
438
428
  }
@@ -1011,18 +1001,26 @@ class QueryLogin extends BaseQuery {
1011
1001
  message: "登录失败"
1012
1002
  };
1013
1003
  }
1014
- async refreshLoginUser(refreshToken) {
1015
- const res = await this.queryRefreshToken(refreshToken);
1004
+ async refreshLoginUser(opts) {
1005
+ const res = await this.queryRefreshToken(opts);
1016
1006
  if (res.code === 200) {
1017
- const { accessToken, refreshToken: refreshToken2, accessTokenExpiresIn } = res?.data || {};
1007
+ const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
1018
1008
  this.storage.setItem("token", accessToken || "");
1019
- await this.beforeSetLoginUser({ accessToken, refreshToken: refreshToken2, accessTokenExpiresIn, check401: false });
1009
+ await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn, check401: false });
1020
1010
  }
1021
1011
  return res;
1022
1012
  }
1023
- async queryRefreshToken(refreshToken) {
1024
- const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
1025
- let data = { refreshToken: _refreshToken };
1013
+ async queryRefreshToken(opts) {
1014
+ const refreshToken = opts?.refreshToken;
1015
+ let accessToken = opts?.accessToken;
1016
+ const _refreshToken = refreshToken ?? await this.cacheStore.getRefreshToken();
1017
+ let data = {};
1018
+ if (accessToken) {
1019
+ data.accessToken = accessToken;
1020
+ }
1021
+ if (_refreshToken) {
1022
+ data.refreshToken = _refreshToken;
1023
+ }
1026
1024
  if (!_refreshToken) {
1027
1025
  await this.cacheStore.clearCurrentUser();
1028
1026
  return {
@@ -1042,7 +1040,7 @@ class QueryLogin extends BaseQuery {
1042
1040
  if (response?.code === 401) {
1043
1041
  const hasRefreshToken = await that.cacheStore.getRefreshToken();
1044
1042
  if (hasRefreshToken) {
1045
- const res = await that.queryRefreshToken(hasRefreshToken);
1043
+ const res = await that.queryRefreshToken({ refreshToken: hasRefreshToken });
1046
1044
  if (res.code === 200) {
1047
1045
  const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
1048
1046
  that.storage.setItem("token", accessToken || "");
@@ -1126,6 +1124,7 @@ class QueryLogin extends BaseQuery {
1126
1124
  }
1127
1125
  const isExpired = await this.cacheStore.getIsExpired();
1128
1126
  if (isExpired) {
1127
+ console.log("token过期,正在刷新token", this.cacheStore.cacheData);
1129
1128
  const res = await this.refreshLoginUser();
1130
1129
  if (res.code === 200) {
1131
1130
  return res.data?.accessToken || null;
@@ -172,13 +172,19 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
172
172
  * @param refreshToken 刷新token,如果不传,则从缓存中获取
173
173
  * @returns
174
174
  */
175
- refreshLoginUser(refreshToken?: string): Promise<any>;
175
+ refreshLoginUser(opts?: {
176
+ refreshToken?: string;
177
+ accessToken?: string;
178
+ }): Promise<any>;
176
179
  /**
177
180
  * 刷新token
178
181
  * @param refreshToken
179
182
  * @returns
180
183
  */
181
- queryRefreshToken(refreshToken?: string): Promise<any>;
184
+ queryRefreshToken(opts?: {
185
+ refreshToken?: string;
186
+ accessToken?: string;
187
+ }): Promise<any>;
182
188
  /**
183
189
  * 检查401错误,并刷新token, 如果refreshToken存在,则刷新token, 否则返回401
184
190
  * 拦截请求,请使用run401Action, 不要直接使用 afterCheck401ToRefreshToken
@@ -312,6 +312,16 @@ class BaseQuery {
312
312
  }
313
313
 
314
314
  // query/query-login/login-cache.ts
315
+ var defaultCacheData = {
316
+ loginUsers: [],
317
+ user: undefined,
318
+ id: undefined,
319
+ accessToken: undefined,
320
+ refreshToken: undefined,
321
+ accessTokenExpiresIn: undefined,
322
+ createdAt: undefined
323
+ };
324
+
315
325
  class LoginCacheStore {
316
326
  cache;
317
327
  name;
@@ -321,13 +331,7 @@ class LoginCacheStore {
321
331
  throw new Error("cache is required");
322
332
  }
323
333
  this.cache = opts.cache;
324
- this.cacheData = {
325
- loginUsers: [],
326
- user: undefined,
327
- id: undefined,
328
- accessToken: undefined,
329
- refreshToken: undefined
330
- };
334
+ this.cacheData = { ...defaultCacheData };
331
335
  this.name = opts.name;
332
336
  }
333
337
  async setValue(value) {
@@ -337,27 +341,13 @@ class LoginCacheStore {
337
341
  }
338
342
  async delValue() {
339
343
  await this.cache.del();
340
- this.cacheData = {
341
- loginUsers: [],
342
- user: undefined,
343
- id: undefined,
344
- accessToken: undefined,
345
- refreshToken: undefined
346
- };
344
+ this.cacheData = { ...defaultCacheData };
347
345
  }
348
346
  getValue() {
349
347
  return this.cache.get(this.name);
350
348
  }
351
349
  async init() {
352
- const defaultData = {
353
- loginUsers: [],
354
- user: undefined,
355
- id: undefined,
356
- accessToken: undefined,
357
- refreshToken: undefined,
358
- accessTokenExpiresIn: undefined,
359
- createdAt: undefined
360
- };
350
+ const defaultData = { ...this.cacheData };
361
351
  if (this.cache.init) {
362
352
  try {
363
353
  const cacheData = await this.cache.init();
@@ -370,18 +360,18 @@ class LoginCacheStore {
370
360
  }
371
361
  return this.cacheData;
372
362
  }
373
- async setLoginUser(user) {
374
- const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
363
+ async setLoginUser(loginUser) {
364
+ const has = this.cacheData.loginUsers.find((u) => u.id === loginUser.id);
375
365
  if (has) {
376
- this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
377
- }
378
- this.cacheData.loginUsers.push(user);
379
- this.cacheData.user = user.user;
380
- this.cacheData.id = user.id;
381
- this.cacheData.accessToken = user.accessToken;
382
- this.cacheData.refreshToken = user.refreshToken;
383
- this.cacheData.accessTokenExpiresIn = user.accessTokenExpiresIn;
384
- this.cacheData.createdAt = user.createdAt;
366
+ this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== loginUser.id);
367
+ }
368
+ this.cacheData.loginUsers.push(loginUser);
369
+ this.cacheData.user = loginUser.user;
370
+ this.cacheData.id = loginUser.id;
371
+ this.cacheData.accessToken = loginUser.accessToken;
372
+ this.cacheData.refreshToken = loginUser.refreshToken;
373
+ this.cacheData.accessTokenExpiresIn = loginUser.accessTokenExpiresIn;
374
+ this.cacheData.createdAt = loginUser.createdAt;
385
375
  await this.setValue(this.cacheData);
386
376
  }
387
377
  getCurrentUser() {
@@ -417,22 +407,22 @@ class LoginCacheStore {
417
407
  if (has) {
418
408
  this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
419
409
  }
420
- this.cacheData.user = undefined;
421
- this.cacheData.id = undefined;
422
- this.cacheData.accessToken = undefined;
423
- this.cacheData.refreshToken = undefined;
424
- this.cacheData.accessTokenExpiresIn = undefined;
425
- this.cacheData.createdAt = undefined;
410
+ const hasOther = this.cacheData.loginUsers.length > 0;
411
+ const current = this.cacheData.loginUsers[this.cacheData.loginUsers.length - 1];
412
+ if (hasOther && current) {
413
+ this.cacheData.user = current.user;
414
+ this.cacheData.id = current.id;
415
+ this.cacheData.accessToken = current.accessToken;
416
+ this.cacheData.refreshToken = current.refreshToken;
417
+ this.cacheData.accessTokenExpiresIn = current.accessTokenExpiresIn;
418
+ this.cacheData.createdAt = current.createdAt;
419
+ } else {
420
+ this.cacheData = { ...defaultCacheData };
421
+ }
426
422
  await this.setValue(this.cacheData);
427
423
  }
428
424
  async clearAll() {
429
- this.cacheData.loginUsers = [];
430
- this.cacheData.user = undefined;
431
- this.cacheData.id = undefined;
432
- this.cacheData.accessToken = undefined;
433
- this.cacheData.refreshToken = undefined;
434
- this.cacheData.accessTokenExpiresIn = undefined;
435
- this.cacheData.createdAt = undefined;
425
+ this.cacheData = { ...defaultCacheData };
436
426
  await this.setValue(this.cacheData);
437
427
  }
438
428
  }
@@ -1011,18 +1001,26 @@ class QueryLogin extends BaseQuery {
1011
1001
  message: "登录失败"
1012
1002
  };
1013
1003
  }
1014
- async refreshLoginUser(refreshToken) {
1015
- const res = await this.queryRefreshToken(refreshToken);
1004
+ async refreshLoginUser(opts) {
1005
+ const res = await this.queryRefreshToken(opts);
1016
1006
  if (res.code === 200) {
1017
- const { accessToken, refreshToken: refreshToken2, accessTokenExpiresIn } = res?.data || {};
1007
+ const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
1018
1008
  this.storage.setItem("token", accessToken || "");
1019
- await this.beforeSetLoginUser({ accessToken, refreshToken: refreshToken2, accessTokenExpiresIn, check401: false });
1009
+ await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn, check401: false });
1020
1010
  }
1021
1011
  return res;
1022
1012
  }
1023
- async queryRefreshToken(refreshToken) {
1024
- const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
1025
- let data = { refreshToken: _refreshToken };
1013
+ async queryRefreshToken(opts) {
1014
+ const refreshToken = opts?.refreshToken;
1015
+ let accessToken = opts?.accessToken;
1016
+ const _refreshToken = refreshToken ?? await this.cacheStore.getRefreshToken();
1017
+ let data = {};
1018
+ if (accessToken) {
1019
+ data.accessToken = accessToken;
1020
+ }
1021
+ if (_refreshToken) {
1022
+ data.refreshToken = _refreshToken;
1023
+ }
1026
1024
  if (!_refreshToken) {
1027
1025
  await this.cacheStore.clearCurrentUser();
1028
1026
  return {
@@ -1042,7 +1040,7 @@ class QueryLogin extends BaseQuery {
1042
1040
  if (response?.code === 401) {
1043
1041
  const hasRefreshToken = await that.cacheStore.getRefreshToken();
1044
1042
  if (hasRefreshToken) {
1045
- const res = await that.queryRefreshToken(hasRefreshToken);
1043
+ const res = await that.queryRefreshToken({ refreshToken: hasRefreshToken });
1046
1044
  if (res.code === 200) {
1047
1045
  const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
1048
1046
  that.storage.setItem("token", accessToken || "");
@@ -1126,6 +1124,7 @@ class QueryLogin extends BaseQuery {
1126
1124
  }
1127
1125
  const isExpired = await this.cacheStore.getIsExpired();
1128
1126
  if (isExpired) {
1127
+ console.log("token过期,正在刷新token", this.cacheStore.cacheData);
1129
1128
  const res = await this.refreshLoginUser();
1130
1129
  if (res.code === 200) {
1131
1130
  return res.data?.accessToken || null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevisual/api",
3
- "version": "0.0.58",
3
+ "version": "0.0.60",
4
4
  "description": "",
5
5
  "main": "mod.ts",
6
6
  "scripts": {
@@ -90,6 +90,15 @@ export type LoginCacheStoreOpts<T extends Cache = Cache> = {
90
90
  name: string;
91
91
  cache: T;
92
92
  };
93
+ const defaultCacheData: CacheLogin = {
94
+ loginUsers: [],
95
+ user: undefined,
96
+ id: undefined,
97
+ accessToken: undefined,
98
+ refreshToken: undefined,
99
+ accessTokenExpiresIn: undefined,
100
+ createdAt: undefined,
101
+ }
93
102
  export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
94
103
  cache: T;
95
104
  name: string;
@@ -100,12 +109,16 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
100
109
  }
101
110
  // @ts-ignore
102
111
  this.cache = opts.cache;
103
- this.cacheData = {
104
- loginUsers: [],
105
- user: undefined,
106
- id: undefined,
107
- accessToken: undefined,
108
- refreshToken: undefined,
112
+ this.cacheData = { ...defaultCacheData };
113
+ this.name = opts.name;
114
+ }
115
+ /**
116
+ * 设置缓存
117
+ * @param key
118
+ * @param value
119
+ * @returns
120
+ accessTokenExpiresIn: undefined,
121
+ createdAt: undefined,
109
122
  };
110
123
  this.name = opts.name;
111
124
  }
@@ -125,13 +138,7 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
125
138
  */
126
139
  async delValue() {
127
140
  await this.cache.del();
128
- this.cacheData = {
129
- loginUsers: [],
130
- user: undefined,
131
- id: undefined,
132
- accessToken: undefined,
133
- refreshToken: undefined,
134
- };
141
+ this.cacheData = { ...defaultCacheData };
135
142
  }
136
143
  getValue(): Promise<CacheLogin> {
137
144
  return this.cache.get(this.name);
@@ -140,15 +147,7 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
140
147
  * 初始化,设置默认值
141
148
  */
142
149
  async init() {
143
- const defaultData: CacheLogin = {
144
- loginUsers: [],
145
- user: undefined,
146
- id: undefined,
147
- accessToken: undefined,
148
- refreshToken: undefined,
149
- accessTokenExpiresIn: undefined,
150
- createdAt: undefined,
151
- };
150
+ const defaultData: CacheLogin = { ...this.cacheData };
152
151
  if (this.cache.init) {
153
152
  try {
154
153
  const cacheData = await this.cache.init();
@@ -165,18 +164,18 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
165
164
  * 设置当前用户
166
165
  * @param user
167
166
  */
168
- async setLoginUser(user: CacheLoginUser) {
169
- const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
167
+ async setLoginUser(loginUser: CacheLoginUser) {
168
+ const has = this.cacheData.loginUsers.find((u) => u.id === loginUser.id);
170
169
  if (has) {
171
- this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
170
+ this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== loginUser.id);
172
171
  }
173
- this.cacheData.loginUsers.push(user);
174
- this.cacheData.user = user.user;
175
- this.cacheData.id = user.id;
176
- this.cacheData.accessToken = user.accessToken;
177
- this.cacheData.refreshToken = user.refreshToken;
178
- this.cacheData.accessTokenExpiresIn = user.accessTokenExpiresIn;
179
- this.cacheData.createdAt = user.createdAt;
172
+ this.cacheData.loginUsers.push(loginUser);
173
+ this.cacheData.user = loginUser.user;
174
+ this.cacheData.id = loginUser.id;
175
+ this.cacheData.accessToken = loginUser.accessToken;
176
+ this.cacheData.refreshToken = loginUser.refreshToken;
177
+ this.cacheData.accessTokenExpiresIn = loginUser.accessTokenExpiresIn;
178
+ this.cacheData.createdAt = loginUser.createdAt;
180
179
  await this.setValue(this.cacheData);
181
180
  }
182
181
 
@@ -214,22 +213,22 @@ export class LoginCacheStore<T extends Cache = Cache> implements CacheStore<T> {
214
213
  if (has) {
215
214
  this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
216
215
  }
217
- this.cacheData.user = undefined;
218
- this.cacheData.id = undefined;
219
- this.cacheData.accessToken = undefined;
220
- this.cacheData.refreshToken = undefined;
221
- this.cacheData.accessTokenExpiresIn = undefined;
222
- this.cacheData.createdAt = undefined;
216
+ const hasOther = this.cacheData.loginUsers.length > 0;
217
+ const current = this.cacheData.loginUsers[this.cacheData.loginUsers.length - 1];
218
+ if (hasOther && current) {
219
+ this.cacheData.user = current.user;
220
+ this.cacheData.id = current.id;
221
+ this.cacheData.accessToken = current.accessToken;
222
+ this.cacheData.refreshToken = current.refreshToken;
223
+ this.cacheData.accessTokenExpiresIn = current.accessTokenExpiresIn;
224
+ this.cacheData.createdAt = current.createdAt;
225
+ } else {
226
+ this.cacheData = { ...defaultCacheData };
227
+ }
223
228
  await this.setValue(this.cacheData);
224
229
  }
225
230
  async clearAll() {
226
- this.cacheData.loginUsers = [];
227
- this.cacheData.user = undefined;
228
- this.cacheData.id = undefined;
229
- this.cacheData.accessToken = undefined;
230
- this.cacheData.refreshToken = undefined;
231
- this.cacheData.accessTokenExpiresIn = undefined;
232
- this.cacheData.createdAt = undefined;
231
+ this.cacheData = { ...defaultCacheData };
233
232
  await this.setValue(this.cacheData);
234
233
  }
235
234
  }
@@ -179,8 +179,8 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
179
179
  * @param refreshToken 刷新token,如果不传,则从缓存中获取
180
180
  * @returns
181
181
  */
182
- async refreshLoginUser(refreshToken?: string) {
183
- const res = await this.queryRefreshToken(refreshToken);
182
+ async refreshLoginUser(opts?: { refreshToken?: string, accessToken?: string }) {
183
+ const res = await this.queryRefreshToken(opts);
184
184
  if (res.code === 200) {
185
185
  const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
186
186
  this.storage.setItem('token', accessToken || '');
@@ -193,9 +193,17 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
193
193
  * @param refreshToken
194
194
  * @returns
195
195
  */
196
- async queryRefreshToken(refreshToken?: string) {
197
- const _refreshToken = refreshToken || (await this.cacheStore.getRefreshToken());
198
- let data = { refreshToken: _refreshToken };
196
+ async queryRefreshToken(opts?: { refreshToken?: string, accessToken?: string }) {
197
+ const refreshToken = opts?.refreshToken;
198
+ let accessToken = opts?.accessToken;
199
+ const _refreshToken = refreshToken ?? (await this.cacheStore.getRefreshToken());
200
+ let data: any = {};
201
+ if (accessToken) {
202
+ data.accessToken = accessToken;
203
+ }
204
+ if (_refreshToken) {
205
+ data.refreshToken = _refreshToken;
206
+ }
199
207
  if (!_refreshToken) {
200
208
  await this.cacheStore.clearCurrentUser();
201
209
  return {
@@ -226,7 +234,7 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
226
234
  if (response?.code === 401) {
227
235
  const hasRefreshToken = await that.cacheStore.getRefreshToken();
228
236
  if (hasRefreshToken) {
229
- const res = await that.queryRefreshToken(hasRefreshToken);
237
+ const res = await that.queryRefreshToken({ refreshToken: hasRefreshToken });
230
238
  if (res.code === 200) {
231
239
  const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
232
240
  that.storage.setItem('token', accessToken || '');
@@ -352,6 +360,7 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
352
360
  }
353
361
  const isExpired = await this.cacheStore.getIsExpired();
354
362
  if (isExpired) {
363
+ console.log('token过期,正在刷新token', this.cacheStore.cacheData);
355
364
  const res = await this.refreshLoginUser()
356
365
  if (res.code === 200) {
357
366
  // 刷新成功,返回新的token
@@ -0,0 +1,10 @@
1
+ const cacheData = {
2
+ accessTokenExpiresIn: 604800,
3
+ createdAt: 1771926793545
4
+ };
5
+
6
+ const expiresIn = cacheData.createdAt + cacheData.accessTokenExpiresIn * 1000;
7
+ console.log('expiresIn', expiresIn);
8
+ const now = Date.now();
9
+ console.log('now', now);
10
+ console.log('isExpired', now >= expiresIn);