2017-08-30 4 views
0

mein Projekt verwendet drei verschiedene Dienste und jetzt kann ich nie Sitzungen Werte, ich habe versucht, die Laravel-Site-Tutorial und folgenden Link Frage: Laravel - Session returns null aber nicht von ihnen funktioniert! in dem ersten, verwende ich diese Bibliothek:Session Return null sowieso

use Session; 

in einer Controller-Klasse:

$result = SocketHelper::sendRequest($req); 

    Session::put('uuid', $result->uuid); 
    Session::save(); 

    Session::put('userId', $result->userID); 

    return Redirect::route('login_step_two'); 

in einer anderen Methode:

$uuid = Session::get('uuid'); 

    $userId = Session::get('userId'); 

aber diese sind null: (( tut Ich muss cookie verwenden ?! Ich habe vor kurzem Upgrade auf Laravel 5.4 Bitte helfen Sie mir! es ist mir Konf. Gemacht benutzt! thx

+0

Erstens, von welcher Version haben Sie ein Upgrade durchgeführt? Wo versuchen Sie auch, auf die Sitzung zuzugreifen, z. in der Datei routes, in einer Controller-Methode, in der '__construct' Methode in einem Controller? –

+0

war es 5.2 und ich zuerst auf 5.3 dann 5.4 aktualisiert, und jetzt verwende ich Sitzung in Controllern, drei von Methoden, ich meine, es ist erforderlich, Sitzung in Auth-Methode zu setzen und im Schlepptau andere Methoden. –

Antwort

0

Haben Sie ordnungsgemäß auf Laravel 5.4 aktualisiert?

Laravel Docs Sessions

Symfony Kompatibilität

Laravel Sitzung Handler nicht mehr implementiert symfonys SessionInterface. Die Implementierung dieser Schnittstelle erforderte die Implementierung von Fremdfunktionen, die vom Framework nicht benötigt wurden. Stattdessen wurde eine neue Illuminate\Contracts\Session\Session Schnittstelle definiert und kann stattdessen verwendet werden. Die folgenden Codeänderungen sollten ebenfalls angewendet werden:

Alle Aufrufe der Methode -> set() sollten in ->put() geändert werden. In der Regel würden Laravel-Anwendungen die set-Methode nie aufrufen, da sie nie in der Laravel-Dokumentation dokumentiert wurde. Es ist hier jedoch aus Vorsicht enthalten.

Alle Aufrufe der Methode ->getToken() sollten in ->token() geändert werden.

Alle Aufrufe der Methode $request->setSession() sollten in setLaravelSession() geändert werden.

+0

hier ist ein Teil meiner Codes: Session :: put ('uuid', $ result-> uuid); // um die Sitzung zu setzen $ uuid = Session :: get ('uuid'); // um eine Sitzung in einer anderen Methode der Controller-Klasse zu bekommen, aber ich empfange Null Ich habe den ersten Teil der ur-Antwort nicht verstanden, tun Ich muss jetzt Illuminate \ Contracts \ Session \ Session-Schnittstelle implementieren? und ist es nicht auf neuen Frameworks implementiert? Wo soll ich das machen? Welche Klasse/Pfad? –

+0

hast du eine Idee? –

+0

Wenn Sie 'SessionInterface' verwenden dann müssen Sie es ändern und 'Session' jetzt verwenden –

0

Versuchen Sie, speichern Session explizit so, versuchen Sie es, es hat für mich funktioniert, hoffe das gleiche für Sie.

Session::put('test_session', 'test message'); 
Session::save(); 

Und abrufen es wie dieses

echo Session::get('test_session'); 

Und es so vergessen:

Session::forget('test_session'); 
Session::save(); 
+0

Ich habe es getestet, ich habe diesen Code nicht benutzt: Session :: save(); aber es funktioniert noch nicht –

+0

Veröffentlichen Sie Ihren Code, aktualisieren Sie Ihre Frage –

+0

Ich bearbeitet es und füge Codes –

0

Haben Sie noch die Rechte Session-Dateien in PHP-Session-Verzeichnis zu schreiben? Überprüfen Sie den von session_save_path() zurückgegebenen Pfad und überprüfen Sie, ob Ihr PHP-Benutzer die Rechte zum Schreiben hat, überprüfen Sie auch, ob sich Dateien im Verzeichnis befinden und wie das Datum der Erstellung ist.

+0

thx für Ihre Antwort, ich habe diese Methode und sah den Pfad war: C: \ xampp \ tmp während Framework/Sitzung in Config angegeben ist/Session und diesem Pfad wird eine neue Datei hinzugefügt! –

+0

Ok, ich vermutete, Sie waren in einer Linux-Umgebung, aber wenn Sie unter Windows arbeiten und Session scheint zu arbeiten, ist es wahrscheinlich ein Problem mit dem Framework. Überprüfen Sie andere Antworten. – EkinOf

+0

Ich bin auf Windows, thx –