Symfony's logout responds with a redirect, causing fetch to parse HTML
as JSON and reject — .finally() ensures the UI always transitions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Overrides PHP's default session.gc_maxlifetime (typically 1h on servers)
so sessions survive inactivity without relying on remember-me.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without always_remember_me: true, the RememberMeBadge was never
activated (Symfony default requires an explicit _remember_me field
in the request). Users were logged out after PHP session expiry
(~24min) instead of the intended 48h.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Symfony 8 SPA with Doctrine ORM, Symfony Security, vanilla JS frontend.
Migrated from plain PHP (delight-im/auth + raw SQL) to full Symfony stack.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>