2015-10-14 14 views
9

Ich habe eine Laravel 5.0 Seite, wo das Frontend JS viele Ajax-Aufrufe an den Back-End-Laravel-Code macht. Ich habe bemerkt, dass ich bei jeder Ajax-Anfrage immer einen neuen "laravel_session" -Cookie-Wert in der Antwort bekomme. Ich vermute, dass dies ein Sicherheitsmechanismus ist, der vor Session-Hijacking schützt.Laravel Sitzungs-ID ändert sich mit jeder Anfrage

Allerdings denke ich, dass dies ein Problem mit meiner Seite verursacht, da meine Ajax-Aufrufe oft parallel und nicht sequentiell erfolgen. Ich warte nicht auf die Antwort vor dem nächsten Anruf.

Betrachten Sie dieses Szenario

. Ajax Anruf 1 - Anfrage - Laravel_Session Cookie = '1234'

. Ajax Call 1 - Antwort - Laravel_Session Cookie = '2345'

. Ajax call 2 - request- laravel_session cookie = '2345'

. Ajax-Aufruf 3 - request- laravel_session cookie = '2345'

. Ajax Call 2 - Antwort - Laravel_Session Cookie = '3456'

. Ajax Anruf 3 - Antwort - Sitzung nicht mehr gültig

Gibt es einen Weg um dies zu umgehen?

Ich sollte auch beachten, dass Sitzungen festgelegt werden in der config/session.php als 'Lebensdauer' => 120,

enter image description here

config/session.php

+2

Es ist kein Sicherheitsmechanismus, und Sie haben Recht - es sollte nicht passieren. Überprüfen Sie Ihre Sitzungseinstellungen in 'config/session.php' und prüfen Sie, ob der Cookie-Pfad gültig ist. Standardmäßig sollten dateibasierte Sitzungen in 'storage/framework/sessions /' gespeichert werden. Wenn dieser Ordner leer ist, kann Ihre Installation möglicherweise nicht korrekt in diesen Ordner schreiben. – samlev

+0

meine Einstellungen in der config/session.php sehen für mich ok 'files' => storage_path(). '/ Framework/sessions', und ich kann Dateien in Storage/Framework/Sessions/ – MakkyNZ

+0

für mich erstellt sehen, ist es ' files '=> storage_path (' framework/sessions ') – mroesler

Antwort

2

Ihre Domain ist ungültig abläuft. Sie müssen sich config.session.domain und config.session.path ansehen.

+0

Ich habe die Einstellung' domain 'in config/session.php in die Domain meiner Site geändert, sehe aber immer noch das Problem. der 'Pfad' ist auf '/' eingestellt, was mir gut erscheint – MakkyNZ

+0

Sind Sie absolut sicher, dass die Domain korrekt ist? Kannst du noch einen Screenshot hochladen? Ich hatte die gleichen Probleme stundenlang, bis ich realisierte, dass ich versehentlich einen kleinen Fehler gemacht hatte. –

+0

Ich habe den Screenshot hinzugefügt. http://local.mysite.com ist die URL zu der Site bei lokaler Ausführung. Ich habe einen Host-Eintrag dafür. – MakkyNZ

6

Sie haben Recht, es ist ein Sicherheitsmechanismus. Um sie zu deaktivieren für die Prüfung, in Kernel.php kommentieren Sie diese Zeile:

\App\Http\Middleware\EncryptCookies::class 

Dann werden Sie die Session-ID in Ihrem Cookie-Viewer sehen, und es ändert sich nicht.

Sie können Google für HTTP verschlüsselte Cookies, um über die Praxis zu lernen. Es gibt eine anhaltende Debatte, ob diese alte Praxis jetzt notwendig ist, da wir HTTPS auf jeder Website verwenden.

+0

warum sagst du das? Es ist nicht wahr, und Sie schlagen vor, dass jemand einen Sicherheitsmechanismus deaktiviert. – hilnius

+0

Ich erhebe dies. Die Frage läuft darauf hinaus: "Warum passiert das? Eine Sicherheitssache?" und ich glaube, das beantwortet es. Sie können die Zeile auskommentieren, um sie zu überprüfen, aber ich empfehle das nicht als Empfehlung, die Verschlüsselung zu entfernen. – mikeDOTexe

+0

Danke und ich habe die Antwort bearbeitet, um die Deaktivierung zu Testzwecken zu verdeutlichen. – malhal

Verwandte Themen