by Anonymous » 06 Apr 2025, 20:49
Ich habe eine benutzerdefinierte Laravel Middleware -Klasse erstellt. Daraus geben ich eine Umleitung aus: < /p>
Code: Select all
return redirect()->route('oauth.establishAuth')->with('url.intended', url()->current());
Im empfangenden Controller rufe ich sofort einen DD () auf, um die eingehende Anforderung zu inspizieren/zu debuggen:
>
Code: Select all
public function index (Request $r) {
dd ($r->session()->all());
/// blah...
redirect()->intended('/')->with('success', 'I got the auth token!');
}
Ich würde erwarten, dass die eingehende Anforderung die wichtige URL-URL enthält.
Code: Select all
[
// ...
'_flash' => [ ... ],
'url' => [
'intended' => 'http://my.website/original-dest',
]
]
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
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
in der Sitzung vor dem Senden enthalten ist, aber er ist nicht da, wenn es im Controller empfangen wird.
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
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.>
Ich habe eine benutzerdefinierte Laravel Middleware -Klasse erstellt. Daraus geben ich eine Umleitung aus: < /p>
[code]return redirect()->route('oauth.establishAuth')->with('url.intended', url()->current());
[/code]
Im empfangenden Controller rufe ich sofort einen DD () auf, um die eingehende Anforderung zu inspizieren/zu debuggen:
>
[code]public function index (Request $r) {
dd ($r->session()->all());
/// blah...
redirect()->intended('/')->with('success', 'I got the auth token!');
}
[/code]
Ich würde erwarten, dass die eingehende Anforderung die wichtige URL-URL enthält.[code][
// ...
'_flash' => [ ... ],
'url' => [
'intended' => 'http://my.website/original-dest',
]
]
[/code]
However, as you see in the image, the only values I get are those managed by Laravel's session manager:
[img]https://i.sstatic.net/H3SzQtyO.png[/img]
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]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] in der Sitzung vor dem Senden enthalten ist, aber er ist nicht da, wenn es im Controller empfangen wird.[code]$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[/code] 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.>