2017-06-04 3 views
0

Ich hatte ein Problem mit Laravel, wenn es eine 404-Ausnahme oder irgendeine Art von Ausnahme auslöst, die auth() - Helfer gibt null auf diesen Seiten zurück, 404, 400 ... jede Ausnahme.Laravel auth() gibt false auf 404 zurück

Als jemand vorschlug, zog ich 2 Middle zum globalgroup

\App\Http\Middleware\EncryptCookies::class, 
\Illuminate\Session\Middleware\StartSession::class, 

es jedoch ein anderes Problem verursacht, ist es mich abzumelden jedes Mal wenn ich die Seite aktualisieren, wenn ich diese Middle zurück eingeloggte Benutzer bewegt bleiben eingeloggt.

So, jetzt brauche ich noch eine Möglichkeit, auth() zu verwenden, in 404 Seiten macht es keinen Sinn, dass die Navigationsleiste Bitte auf 404 Seiten anzeigen, wenn die Verwendung bereits angemeldet ist, das ist wirklich schlecht Laravel .

Eigentlich die oben von vielen vorgeschlagene Lösung, verursachen viele Probleme im Code und die Erkennung des authentifizierten Benutzers, ich habe nur einige Tests, es war eine neue Sitzung bei jeder Aktualisierung zu erstellen.

+0

404 Seiten werfen das? sind das 404 Seiten benutzerdefinierte Seiten? – jycr753

+0

@ jycr753 404 Seiten sind in Ordnung, ich habe versucht mit Bearbeitungshandler und mit benutzerdefinierten /errors/404.blade.php Dateien, 404 ist nicht das Problem, das Problem ist, dass, wenn ich eine 404-Seite besuchen, in der Klinge, kann ich nicht scheinen um festzustellen, ob der Benutzer angemeldet ist, auth() -> check(), auth() -> user() return false/null – Emad

+0

@Emad Ich habe es gerade noch einmal überprüft und es funktioniert perfekt ohne Sitzung gelöscht werden, wie Sie sagten. Das war das gleiche, als ich das erste Mal nachgesehen habe. Ich muss mit Datenbanksitzungen verbunden sein. Die Dateisitzungen, die ich anfangs getestet habe, funktionieren gut. – Sandeesh

Antwort

0

Ausgabe wird bei meiner vorherigen verwandten Frage gelöst auth() method null on Exceptions

Diese Middle bewegt werden soll und nicht auf das globale Array kopiert. Ich hatte mehrere Instanzen, Webgruppe und globale Gruppe, die das Problem verursacht haben.

Durch Kopieren der Middleware in App/Http/Kernel.php von der Gruppe "web" in die Gruppe "middlewares" wird die Sitzung bei jeder Aktualisierung neu erstellt. Ich hoffe, jemand wird das nützlich finden.