Sollte eine Umleitung mit Flash-Daten die Flash-Daten beibehalten, wenn die Auth-Middleware beteiligt ist?Laravel 5.2 Flash-Daten bleiben nicht
Einige Housekeeping Dinge beachten Sie, daß einige mögliche Folge Fragen beantworten:
-
- ich die Web-Middleware nenne.
-
- Ich verwende den Treiber für Dateisitzungen.
-
- ich in der Sitzung mit Ausnahme von geflasht Daten gespeicherten Werte abrufen kann.
-
- Ich habe versucht, indem Sie die folgende Zeile zum Authentifizieren Middleware, die geflasht Daten flasht:
$request->session()->reflash();
- Ich habe versucht, indem Sie die folgende Zeile zum Authentifizieren Middleware, die geflasht Daten flasht:
Als solche Authenticate.php jetzt wird wie folgt angezeigt:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
$request->session()->reflash();
return $next($request);
}
Dieses Problem betrifft auch das von make: auth generierte auth boilerplate, was dazu führt, dass die $ errors fehlschlagen angezeigt, um bei einem Fehler anzuzeigen.
UPDATE (29.03 @ 8.54 EST)
ich entdeckt, was ich glaube, die Ursache gewesen zu sein, wie Sie unten sehen werden. Jede Route rief zweimal die "Web" -Middleware an. Als solche wurden tatsächlich zwei Anfragen ausgeführt, die die Flash-Nachricht (en) löschten, bevor der Benutzer sie sehen konnte. Ursprüngliche Route: Liste ist unten.
+--------+----------+-------------------------+------+-----------------------------------------------------------------+---------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+---------------+
| | GET|HEAD |/ | | Closure | web |
| | GET|HEAD | groups | | App\Http\Controllers\[email protected] | web,web,auth |
| | GET|HEAD | groups/set-default/{id} | | App\Http\Controllers\[email protected] | web,web,auth |
| | GET|HEAD | home | | App\Http\Controllers\[email protected] | web,web,auth |
| | GET|HEAD | login | | App\Http\Controllers\Auth\[email protected] | web,web,guest |
| | POST | login | | App\Http\Controllers\Auth\[email protected] | web,web,guest |
| | GET|HEAD | logout | | App\Http\Controllers\Auth\[email protected] | web,web |
| | POST | password/email | | App\Http\Controllers\Auth\[email protected] | web,web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\[email protected] | web,web,guest |
| | GET|HEAD | password/reset/{token?} | | App\Http\Controllers\Auth\[email protected] | web,web,guest |
| | GET|HEAD | register | | App\Http\Controllers\Auth\[email protected] | web,web,guest |
| | POST | register | | App\Http\Controllers\Auth\[email protected] | web,web,guest |
| | GET|HEAD | visitees | | App\Http\Controllers\[email protected] | web,web,auth |
| | GET|HEAD | visitees/check-in/{id} | | App\Http\Controllers\[email protected] | web,web,auth |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+---------------+
Meine Strecken erscheinen nun wie folgt nach den Routen von der ‚web‘ Middleware zu entfernen:
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
| | GET|HEAD |/ | | Closure | web |
| | GET|HEAD | groups | | App\Http\Controllers\[email protected] | web,auth |
| | GET|HEAD | groups/set-default/{id} | | App\Http\Controllers\[email protected] | web,auth |
| | GET|HEAD | home | | App\Http\Controllers\[email protected] | web,auth |
| | GET|HEAD | login | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | POST | login | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | GET|HEAD | logout | | App\Http\Controllers\Auth\[email protected] | web |
| | POST | password/email | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | GET|HEAD | password/reset/{token?} | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | GET|HEAD | register | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | POST | register | | App\Http\Controllers\Auth\[email protected] | web,guest |
| | GET|HEAD | visitees | | App\Http\Controllers\[email protected] | web,auth |
| | GET|HEAD | visitees/check-in/{id} | | App\Http\Controllers\[email protected] | web,auth |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
Auf die Routen aus der ‚Web‘ Middleware-Gruppe zu bewegen, die Flash-Nachrichtenanzeige korrekt. Aber jetzt habe ich ein neues Problem!
Die Flash-Nachrichten werden nach der ersten Anfrage nicht aus der Sitzung entfernt. Sie behalten jede nachfolgende Anforderung bei, bis sie manuell gelöscht oder vergessen werden.
Ich bin mir nicht sicher, an dieser Stelle, wenn ich eine zweite Frage öffnen sollte, die speziell die Persistenz der Flash-Daten behebt. Bitte, wenn ja.
Geist zu regenerieren, die Ausgabe der Ausgabe Handwerker Befehl 'Route php Handwerker zu zeigen: list'? –
@terrylow Ich habe die Route hinzugefügt: Liste nach Ihrer Anfrage. Ich habe einige zusätzliche Entdeckungen gemacht und werde mich weiter mit diesem Thema befassen. Alle Hilfe wird geschätzt! –
pls Wiederherstellen Sie Ihre Routen und führen Sie ein 'Composer-Update', der Doppel-Web-Middleware Auth Routen Bug wurde bereits mit der Veröffentlichung von Laravel/framwork 5.2 gelöst.27, dann führen 'php Handwerker machen: auth' btw entfernen Sie die Zeile, die Sie manuell Reflash-Sitzung haben, und Ihr Problem sollte nicht mehr –