Ho uno strano problema con un'applicazione Laravel 5.1.Laravel 5.1 dati sessione in modo casuale
Intermittently, sta lasciando cadere i dati di sessione. Mi viene rilevato scrivendo un middleware che scrive il contenuto della sessione per quella richiesta nel file di registro. Sebbene l'ID sessione (Session::getId()
) non cambi, il valore di _token
nei dati di sessione recuperati con Session::all()
fa.
Come ho detto, questo accade a intermittenza. Posso aggiornare lo stesso URL più volte, quindi a caso su un aggiornamento i dati della sessione sono andati, e il valore _token
è diverso dalle richieste precedenti.
Cosa potrebbe causare questo? Ho anche notato che l'oggetto flash
non è nei dati della sessione "abbandonata".
Di seguito è riportato uno snippet del registro. È possibile visualizzare il contenuto della chiave session_data
in modo casuale "forma" nelle ultime due righe, ma l'ID di sessione rimane costante.
Inoltre, non sono sicuro se è pertinente, ma ho DebugBar attivato.
UPDATE: Attraverso il debug, ho scoperto che su qualche pagina carica la sessione è completamente vuota , come in, non _token
(quindi uno nuovo sempre generato). Niente.
Quanto frequentemente accade? Perché ho cercato di riprodurlo abilitando DebugBar, creando un middleware che registri l'ID di sessione e i dati come JSON serializzati proprio come si fa, quindi chiamò una route con una vista che si aggiorna automaticamente ogni secondo e la lascia come quella per circa 10 minuti. Ma non ha aggiornato il token CSRF o non ha rilasciato alcun dato di sessione.Questo è stato fatto con 'artisan serve' e il driver di sessione' file', quindi potresti voler pubblicare maggiori informazioni sul tuo ambiente. – Bogdan
Succede ogni minuto o due. L'app è in esecuzione con Apache. Posso aggiornare un URL e casualmente perderò i dati secondo la schermata dopo un certo numero di aggiornamenti. Non c'è un vero e proprio schema, che sta cercando di trovare la causa difficile. –
Il mio primo suggerimento è di provare a riprodurre il problema usando su un'installazione pulita di Laravel qualcosa sulla falsariga di ciò che ho descritto nel mio primo commento, per vedere almeno se il problema è con il codice dell'applicazione o con qualcos'altro in la tua configurazione. – Bogdan