fix: resolve sign-in redirect race condition in Login.tsx

Use window.location.href = '/' instead of React Router navigate() after
successful sign-in. Better-Auth's useSession() hasn't updated its internal
cache when navigate() fires, causing ProtectedRoute to see a null session
and redirect back to /login. A full page reload reinitializes useSession()
with fresh cookie-backed session state.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Barcode Betty
2026-04-19 15:22:37 +00:00
parent a55c64a9c8
commit 70e5a232c9
+4 -3
View File
@@ -31,11 +31,12 @@ export function Login() {
throw new Error(authError.message ?? 'Sign in failed')
}
// After successful signIn, force a session fetch to confirm the cookie is set
// before navigating to the protected route
// After successful signIn, force a full page reload so Better-Auth's
// useSession() reinitializes with fresh cookie-backed session state.
// Using React Router's navigate() races with Better-Auth's internal update.
const sessionResult = await authClient.getSession()
if (sessionResult.data) {
navigate('/')
window.location.href = '/'
} else {
setError('Sign in failed. Please try again.')
}