refresh token 轮换原来是「读出来、查库、写回去」,两个标签页同时换会各自轮换出一张, 后写的冲掉先写的;浏览器里留下的若是被冲掉那张,下次换就被拒。机房走 http 用不了 navigator.locks,前端没法让标签页排队。 - 轮换改成比对再写入(Lua),抢输的重读后走宽限期 - 宽限期里回的是当前那张 refresh token,不再回 null,几个标签页最后落到同一张上 - 响应丢了、前端拿旧的重试,也由同一支接住 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
793848b06f
commit
13843c79a0
3 files changed
+108
-66
No files matched your search
@@ -26,8 +26,7 @@ export function saveTokens(tokens: AuthTokens) {
|
||||
token: tokens.accessToken,
|
||||
expiresAt: Date.now() + tokens.expiresIn * 1000,
|
||||
} satisfies StoredAccess)
|
||||
// null = 换 token 的宽限期,沿用本地那张,见契约 AuthTokens 的注释
|
||||
if (tokens.refreshToken) storage.set(STORAGE_KEY.REFRESH_TOKEN, tokens.refreshToken)
|
||||
storage.set(STORAGE_KEY.REFRESH_TOKEN, tokens.refreshToken)
|
||||
}
|
||||
|
||||
export function clearTokens() {
|
||||
|
||||
Reference in new issue
Block a user