feat: add overlap grace period for refresh tokens to handle concurrent requests

This commit is contained in:
shuaiplus
2026-02-25 00:22:31 +08:00
parent bc0fd65b6b
commit 4f82cf9d43
3 changed files with 29 additions and 2 deletions
+6 -2
View File
@@ -244,8 +244,12 @@ export async function handleToken(request: Request, env: Env): Promise<Response>
return identityErrorResponse('Invalid refresh token', 'invalid_grant', 400);
}
// Revoke old refresh token (prevent reuse)
await storage.deleteRefreshToken(refreshToken);
// Keep a short overlap window for old refresh token to absorb
// concurrent refresh requests from multiple client contexts.
await storage.constrainRefreshTokenExpiry(
refreshToken,
Date.now() + LIMITS.auth.refreshTokenOverlapGraceMs
);
const { accessToken, user } = result;
const newRefreshToken = await auth.generateRefreshToken(user.id);