2017-10-17 16 views
0

Ich habe mein benutzerdefiniertes Modell erstellt, um die Benutzer einzuloggen. Ich benutze SQLite als Datenbank. "Benutzer" Tabelle hat "ID" -Spalte und ich verwende nicht eloquent, so habe ich den Treiber als "Datenbank" und Tabelle als "Benutzer" in der Datei auth.config geändert.Laravel Sitzung läuft sofort ab (Laravel 5.5)

Mein Index-Controller überprüft den Benutzer, ob er angemeldet ist. Wenn nicht, wird auf die Anmeldeseite umgeleitet. Sobald das Login-Formular übermittelt wurde (Ajax-Anruf), wird der Benutzer bei Eingabe eines falschen Benutzernamens oder Passworts eine Fehlermeldung erhalten, die besagt, dass falsche Anmeldedaten eingegeben wurden. Wenn der Benutzername und das Passwort wahr sind, wird auf die Indexseite umgeleitet. Da der Benutzer jedoch nicht als eingeloggt angenommen wird, wird er erneut zur Anmeldeseite weitergeleitet. Auch ich habe versucht, die ID des Benutzers nach dem erfolgreichen Versuch (ohne Umleitung) zu wiederholen, und es wurde ohne Probleme angezeigt. Aber nachdem ich die Indexseite besucht habe, werde ich erneut zur Anmeldeseite weitergeleitet.

Ich habe versucht, Sitzung hinzuzufügen und es so anzuzeigen, wenn ich den folgenden Code aufrufen;

session()->put('foo', 'bar'); 
echo session()->get('foo'); 

"bar" wird auf der Seite wiedergegeben. Aber wenn ich die Sitzung auf einer anderen Seite wiederhole (ohne eine neue Sitzung hinzuzufügen, weil ich bereits hinzugefügt habe), wird "bar" nicht auf der Seite wiedergegeben.

Beachten Sie auch, dass keine Dateien im Ordner "storage/framework/sessions" gespeichert sind.

Sitzungstyp ist Datei und Lebensdauer ist 720.Ich habe auch "Cookie" und "Datenbank" versucht. Das gleiche Problem ist bei "Cookie" aufgetreten, aber ich habe die Ausnahme "Datenbanktreiber kann nicht verwendet werden" mit "Datenbank" -Treiber (Ich habe die erforderlichen Tabellen erfolgreich migriert).

Auch die Website ist auf localhost (Windows 10). Ich glaube also nicht, dass Ordnerberechtigungen ein Problem sein können. Auch ich habe einen anderen Laravel (ältere Version - es muss 5.4 sein, denke ich) auf dem gleichen PC und es funktioniert ohne Probleme. Beide verwenden PHP 7 und Nginx Server.

Antwort

0

So habe ich mein Problem gefunden. Ich hatte einen benutzerdefinierten ServiceProvider erstellt und benutzerdefinierte Routen definiert, um ein modulares System zu erstellen. Da ich versucht habe, Routendateien hier einzubinden, hat das neue Laravel-Routing-System es als API-Routen verwendet. So waren Sitzungen nicht verfügbar.

Route::middleware('web')->group($route_file); 

und Routen werden als Web-Routen und Sitzungen arbeiten artig:

Nun meinen Code Ich habe mich verändert.

Ich hoffe, dies hilft anderen, dieses Problem zu haben.

0

Überprüfen Sie die Sitzungskonfiguration in der Datei config/session.php.

Wenn Ihr Sitzungstreiber eine Datei ist, stellen Sie sicher, dass Sie über die Berechtigungen storage/session Ordner mit chmod -R 777 storage verfügen.

Auch Sie können für lifetime und expire_on_close Konfigurationen für diese Datei überprüfen, um Sitzung zwischen Anforderungen zu erhalten.

+1

Danke für die Antwort, aber ich habe bereits erwähnt, über diese Vorsichtsmaßnahmen in meiner Frage. –