Laravel session-key ändern die ganze Zeit?
Ich bin mit "file storage" für meine session. Wenn ich dies ausführen:
Session::set('awesomekey', 'myVal123');
Und aktualisieren Sie die Seite, ich kann sehen, dass die neuen Dateien, die erstellt werden in /storage/Sitzung jedes mal. Ich nahm an, es würde das update auf die gleiche Datei jedes mal. Grundsätzlich bedeutet dies, dass die sessions nicht funktionieren. In anderen Worten, wenn es hält Neuerstellung einer session-Datei, das funktioniert nie:
Session::get('awesomekey');
Oder zumindest, es gibt eine leere. Was bin ich, das könnte möglicherweise die Ursache ein neuer session-key erzeugt werden jedes mal, wenn eine Seite geladen wird?
UPDATE
Auf weitere Untersuchungen, es scheint das cookie wird regeneriert auf jeder Seite zu laden. Was könnte die Ursache, dass?
Ich bin auch nicht auf der Suche einloggen noch so, dass diese Informationen nutzlos für mich --> http://willworkforbanjos.com/2014/02/laravel-sessions-not-working-in-4-1/
Mein problem passiert, wenn ich einfach die über set-und get-code in der master.blade.php Datei. Es sollte gesetzt werden, speichern die info, und auf der nächsten reload Holen Sie sich die richtigen Informationen aus der Sitzung. Aber es nicht können, weil Sie auf neu laden, es verändert den cookie zu einigen anderen code.
Jemand wissen, warum dies passiert ist?
UPDATE 2
- Hinzufügen: 'lifetime' => 120 bis session.php hat nicht funktioniert. (@Scheich Heera)
- Platzieren Sie den code in den controller, funktioniert nicht. (@Phill Funken)
- Ich habe versucht, chrome und firefox, Gleiches Ergebnis (@Shift Exchange)
Nur klar zu sein, was ich versuche zu tun. Ich fügen Sie den folgenden code in HomeController.php:
public function index()
{
Session::put('awesomekey', 'myVal123');
return View::make('home.index');
}
Dann lege ich diese in mein master.blade.php:
print Session::get('awesomekey');
Ich keine "stirbt" oder zufälliger echos in meinem controller-Seite der code, außer diesem. Wenn ich die Datei öffnen, das erste mal, ich kann sehen, myVal123 wird ausgedruckt.
Ich dann nehmen Sie dieses Teil in die Steuerung:
Session::put('awesomekey', 'myVal123');
Und die Seite neu laden. Jetzt druckt nichts. Ich sehe in meinem browser, das cookie hat sich geändert. Erzeugen Sie ein neues cookie verliert die Referenz auf die session, so dass ich ' m stecken versucht zu verstehen, warum Sie es tun, dass jedes mal, obwohl es speichert die Sitzung auf der ersten laden.
Mehr Ideen?
UPDATE 3
Ich auch versucht:
- Läuft "php artisan dump-autoload" ... funktioniert immer noch nicht
- Ging ich hier: http://www.whatismybrowser.com/are-cookies-enabled ... und ja, cookies sind aktiviert.
Ich bin wirklich langsam die Ideen aus hier...
UPDATE 4
-
Ging ich zu SessionManager.php und nur unter dieser:
$lifetime = $this->app['config']['Sitzung.lifetime'];
Druckte ich den Wert des Lebens Zeit:
print $lifetime; die();
Und dieser code wurde nie Treffer auf Seite neu laden?! Doch indem diese in meinem controller:
$d = Config::get('session.lifetime');
print $d;
Tatsächlich drucken Sie sich mein Wert für die Lebensdauer.... 🙁
- Versuchen Sie es mit session-flash, es wird nur Arbeit für die nächste Anfrage , es sei denn, Sie reflash es
- Kannst du vielleicht näher erläutern? Mein problem ist, dass meine cookies werden immer neu generiert, und ich brauche, um zu verstehen, warum?
- Kannst du mehr code ?
- Haben Sie versucht, Sie zu speichern etwas in die Sitzung aus Ihrem controller, anstatt aus Ihrer Sicht?
- Haben Sie versucht, auf einen anderen browser/computer, um zu sehen, ob das problem passiert dann? Ihr nicht in "privaten browser" - Modus, oder was?
- Ich will mehr Informationen liefern, heute Abend so zu Antworten, um alle Ihre Abfragen. Leider habe ich nicht den code bei mir jetzt.
- Haben Sie 'secure' => false, legen Sie Sie in Ihrem session.php config-Datei?
- Auch tritt dieses problem auf eine leere Installation von Laravel 4.1?
- Ich werde zurückkehren, um meine Niederlassung zu einem leeren installieren und berichten ein wenig.
- Ich habe wieder zwei Versionen zurück, und nun-Sitzungen arbeiten. So etwas habe ich Hinzugefügt, brach es. Halten Sie Angeln, bis ich es finde.
- Haben Sie es behoben? Ich habe das gleiche Problem. Gute Arbeit in lokalen, aber nicht im server. Bitte um Rat.
- Ja, habe ich. Das problem für mich war, dass die cookie-Namen in laravel muss nur aus Buchstaben. Ich hatte einen fullstop in mir. Siehe unten meine Antwort (ich landete die Beantwortung meiner eigenen Frage).
- Für jemand immer noch dieses Problem, wenn Sie mit Auth-es wurde geändert in laravel 4.1 Auth::login() wird die session neu generiert werden. Die überarbeitung der Auth-Implementierung löste dieses Problem für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem war diese Zeile:
in session.php. Anscheinend verliert das cookie, wenn Sie einen "." in den cookie-Namen. Ich kann nicht glauben, dass Laravel nicht so. Oder vielleicht ist es browser im Allgemeinen.
Ich glaube, Sie sind mit:
in Ihrem
app/config/session.php
- Datei. Machen Sie so etwas wie dieses:Dann funktioniert es. Ich habe versucht die selben Einstellungen wie du Sie beschrieben hast und nur verwendet
0
und ich bekomme dasselbe Ergebnis jedes mal eine neue Datei wird erstellt, aber sobald ich es ändern zu120
oder so, es funktioniert. So, dann macht es Sinn, dass, wenn'lifetime' => 0
in der session-config dann jedes mal, wenn Sie gerade erstellt eine neue Datei für eine neue Sitzung ist, da die Sitzung nicht live. Also, gehen Sie zu Ihremapp/config/session.php
- Datei, und Sie werden etwas finden, wie diese, ändern Sie den Wert:Update:
Können Sie verwenden Sie folgenden code, um die
lifetime
Wert in derapp/config/session.php
Datei:0
Lebensdauer. Alles gute 🙂autoloader
Klasse, so, es erfolgt durch das framework.Haben Sie einen Blick auf die Cookies verfallen mal in den Chrome developer tools oder Firebug. Wenn es auf 0 gesetzt ist, dann verfällt das cookie sofort.
Außerdem überprüfen, ob deine Uhr richtig eingestellt - seltsame Dinge passieren könnte, wenn es eine Diskrepanz zwischen Ihrem host und den browser die Uhr. Machen beide Systeme zu konsultieren, NTP um sicherzustellen, dass dies nicht ein Problem.
Ich hatte ein ähnliches problem mit den sessions, wenn man mit dem Modell Benutzer und Ihre Benutzer-Tabelle nicht über den Primärschlüssel als Id, müssen Sie überschreiben, dass die variable in dem Modell.
In /app/config/session.php überprüfen Sie die "HTTPS-Cookie" - Einstellung.
Stellen Sie sicher, es ist "secure => false, wenn Sie nicht mit SSL!
Ich habe Probleme damit in Zusammenhang stehen. Die session-Datei nicht jedes mal, aber manchmal habe ich einfach nicht die session-variable angezeigt. Nach Stunden der versuche fand ich, dass das problem war in Bezug auf die Debugbar.
Wenn Sie mit Debugbar und session-Probleme, deaktivieren Sie es und versuchen Sie es erneut, um zu bestätigen.
Verwenden Session::put('value') anstelle von set.
http://laravel.com/docs/session#session-usage
Session::put()
verwendetSession::set()
github.com/laravel/framework/blob/4.2/src/Illuminate/Session/...