-
-
Notifications
You must be signed in to change notification settings - Fork 650
Open
Description
Description
The server correctly implements refresh token support (issues refresh tokens on login, has /auth/refresh endpoint), but the client never uses refresh tokens. This causes users to be logged out after the access token expires (default 2 hours) even though their refresh token is still valid (default 7 days).
Current Behavior
- User logs in - server returns
tokenandrefreshToken - Client stores only
token, ignoresrefreshToken - After 2 hours, access token expires
- Client receives 401, immediately clears auth and redirects to login
- User must log in again
Expected Behavior
- User logs in - server returns
tokenandrefreshToken - Client stores both tokens
- After 2 hours, access token expires
- Server returns 403 "Request new access token"
- Client calls
POST /auth/refreshwith refresh token - Client receives new access token, retries original request
- User session continues seamlessly for 7 days
Affected Files
client/src/Features/Auth/authSlice.js- Only storestoken, notrefreshTokenclient/src/Utils/NetworkService.js- Never sendsx-refresh-tokenheader, no refresh logic on 401/403
Proposed Fix
I have a working fix and will open a PR.
Changes:
- Store
refreshTokenin Redux state on login/register - Send
x-refresh-tokenheader with all requests - On 403 response, call
/auth/refreshto get new token - Retry failed requests with new token
- Queue concurrent requests during refresh to prevent race conditions
Environment
- Server version: latest (docker image
bluewaveuptime/uptime_server:latest) - Client version: latest (docker image
bluewaveuptime/uptime_client:latest)
Metadata
Metadata
Assignees
Labels
No labels