Sitzungswerte, die nicht in Laravel Middleware umgeleitet werden (Laravel 12)
Posted: 06 Apr 2025, 20:49
Ich habe eine benutzerdefinierte Laravel Middleware -Klasse erstellt. Daraus geben ich eine Umleitung aus: < /p>
Im empfangenden Controller rufe ich sofort einen DD () auf, um die eingehende Anforderung zu inspizieren/zu debuggen:
>
Ich würde erwarten, dass die eingehende Anforderung die wichtige URL-URL enthält.
However, as you see in the image, the only values I get are those managed by Laravel's session manager:

And of course, when I comment out the DD () Aufrufen im obigen Code, werde ich zu/ umgeleitet (aufgrund der Tatsache, dass die Taste von URL.inteded in der Sitzung nicht vorhanden ist). Warum werden die Werte, die ich in die Funktion () < /code> nicht übergeben, von der Empfangsroute nicht gesehen werden? In Bootstrap/app.php , um sicherzustellen, dass StartSession festgelegt wird, bevor ich versuche, Daten an die Sitzung zu schreiben
in der Sitzung vor dem Senden enthalten ist, aber er ist nicht da, wenn es im Controller empfangen wird. und andere "Turn-it-Off-and-on-on-AN-AN-AN-" -Typübungen
Versuchte sicherzustellen, dass es nicht "doppelte Umleitung" -Szenarien stattfindet (wobei die gebliebenen Werte nach dem ersten Umbau entfernt werden) /> Hat jemand irgendwelche Ideen dafür, was ich falsch mache? < /P.>
Code: Select all
return redirect()->route('oauth.establishAuth')->with('url.intended', url()->current());
>
Code: Select all
public function index (Request $r) {
dd ($r->session()->all());
/// blah...
redirect()->intended('/')->with('success', 'I got the auth token!');
}
Code: Select all
[
// ...
'_flash' => [ ... ],
'url' => [
'intended' => 'http://my.website/original-dest',
]
]

And of course, when I comment out the DD () Aufrufen im obigen Code, werde ich zu/ umgeleitet (aufgrund der Tatsache, dass die Taste von URL.inteded in der Sitzung nicht vorhanden ist). Warum werden die Werte, die ich in die Funktion () < /code> nicht übergeben, von der Empfangsroute nicht gesehen werden? In Bootstrap/app.php , um sicherzustellen, dass StartSession festgelegt wird, bevor ich versuche, Daten an die Sitzung zu schreiben
Code: Select all
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->priority([
\Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
\Illuminate\Cookie\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Illuminate\Contracts\Auth\Middleware\AuthenticatesRequests::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class,
\Illuminate\Routing\Middleware\ThrottleRequestsWithRedis::class,
\Illuminate\Contracts\Session\Middleware\AuthenticatesSessions::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
App\Http\Middleware\EnsureIfsTokenValid::class,
]);
})
< /code>
[*] Daten in die Sitzung vor dem Senden in die Sitzung bündeln. In diesem Debug kann ich sehen, dass der Wert von Animal
Code: Select all
$r->session()->put ('animal', 'chicken');
dump ('before sending', $r->session()->all());
return redirect()->route('oauth.establishIfsAuth')->with(['url.intended' => $my_route]);
< /code>
php artisan cache:clear
Versuchte sicherzustellen, dass es nicht "doppelte Umleitung" -Szenarien stattfindet (wobei die gebliebenen Werte nach dem ersten Umbau entfernt werden) /> Hat jemand irgendwelche Ideen dafür, was ich falsch mache? < /P.>