Autentificarea bazată pe sesiune leagă browserul de starea serverului prin cookie criptat. Când utilizatorul raportează delogări inexplicabile sau formulare care „uită” date, cauza e adesea configurarea sesiunii, nu parola. Discuția explică driverii, timpul de viață și interacția cu HTTPS, plus diferența dintre „remember me” și sesiunea obișnuită.
Driver-ul `file` e simplu pe un singur server; `database` sau Redis scalează când ai mai multe instanțe PHP. Tabelul de sesiuni trebuie curățat periodic — Laravel poate expune garbage collection configurabil. Nu amesteca sesiuni pe disc între medii; path-ul `storage/framework/sessions` trebuie writable. Migrarea de la file la database cere planificare ca utilizatorii logați să nu fie delogați brusc dacă invalidezi sesiunile vechi.
Setarea `SESSION_DOMAIN` greșită poate împiedica cookie-ul să traverseze subdomenii legitime sau, invers, îl poate expune prea larg. `SameSite=lax` e rezonabil pentru login clasic; `none` cere `secure` și atenție la CSRF cross-site. Durata `lifetime` în minute trebuie aliniată la expectativele utilizatorului pentru „remember me” separat de sesiune. Subdomenii wildcard cer atenție la domeniul setat — un punct în plus poate invalida cookie-ul pe tot site-ul.
La login reușit, regenerarea ID-ului de sesiune reduce riscul de session fixation. Logout-ul invalidează sesiunea și regenerează token CSRF. Dacă păstrezi date mari în sesiune (coș, draft), monitorizează dimensiunea — cookie-ul de sesiune nu e locul pentru payload-uri mari. Flash data pentru mesaje one-shot trebuie consumată o singură dată; dublarea redirect-urilor poate pierde mesajul de succes.
În forum, nu posta dump-uri cu `session()->all()`. Compară comportamentul între fereastră normală și privată pentru a exclude extensii care blochează cookie-uri. Verifică ce middleware rulează pe rută — grupul `web` activează StartSession; API stateless fără Sanctum nu ar trebui să depindă de sesiune accidental. Diferența de ceas între servere rareori afectează sesiunea, dar expirarea cookie-ului poate părea aleatoare dacă timezone-ul logurilor induce confuzie.
Driver și persistență
Driver-ul `file` e simplu pe un singur server; `database` sau Redis scalează când ai mai multe instanțe PHP. Tabelul de sesiuni trebuie curățat periodic — Laravel poate expune garbage collection configurabil. Nu amesteca sesiuni pe disc între medii; path-ul `storage/framework/sessions` trebuie writable. Migrarea de la file la database cere planificare ca utilizatorii logați să nu fie delogați brusc dacă invalidezi sesiunile vechi.
Cookie domain și same-site
Setarea `SESSION_DOMAIN` greșită poate împiedica cookie-ul să traverseze subdomenii legitime sau, invers, îl poate expune prea larg. `SameSite=lax` e rezonabil pentru login clasic; `none` cere `secure` și atenție la CSRF cross-site. Durata `lifetime` în minute trebuie aliniată la expectativele utilizatorului pentru „remember me” separat de sesiune. Subdomenii wildcard cer atenție la domeniul setat — un punct în plus poate invalida cookie-ul pe tot site-ul.
Regenerare și invalidare
La login reușit, regenerarea ID-ului de sesiune reduce riscul de session fixation. Logout-ul invalidează sesiunea și regenerează token CSRF. Dacă păstrezi date mari în sesiune (coș, draft), monitorizează dimensiunea — cookie-ul de sesiune nu e locul pentru payload-uri mari. Flash data pentru mesaje one-shot trebuie consumată o singură dată; dublarea redirect-urilor poate pierde mesajul de succes.
Debugging fără expunere
În forum, nu posta dump-uri cu `session()->all()`. Compară comportamentul între fereastră normală și privată pentru a exclude extensii care blochează cookie-uri. Verifică ce middleware rulează pe rută — grupul `web` activează StartSession; API stateless fără Sanctum nu ar trebui să depindă de sesiune accidental. Diferența de ceas între servere rareori afectează sesiunea, dar expirarea cookie-ului poate părea aleatoare dacă timezone-ul logurilor induce confuzie.