I can't get flash messages to forward from Laravel #1142
-
I've been at this days and followed every guide and still can't get this working. I'd really appreciate any help. I'm doing a simple redirect from my controller to the same page, yet the flash never appears. Laravel 9.5.1 Controller.php
HandleInertiaRequests.php
Session response every time
|
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 3 replies
-
I believe the feature you need to leverage is Flash Data, like so: $request->session()->flash('error', 'Oh no!');
// then redirect
return Redirect::route('home'); Then |
Beta Was this translation helpful? Give feedback.
-
If anyone finds this in the future, the fix in my case after days and days of experimenting was to remove EnsureFrontendRequestsAreStateful from my middleware groups |
Beta Was this translation helpful? Give feedback.
-
@littleblue50 thanks for the solution! The problem is with I created a new middleware with commented StartSession and changed in middleware groups. Now everything is working :) app/Http/Middleware/EnsureFrontendRequestsAreStateful.php <?php
namespace App\Http\Middleware;
use Illuminate\Routing\Pipeline;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
class EnsureFrontendRequestsAreStateful
{
/**
* Handle the incoming requests.
*
* @param \Illuminate\Http\Request $request
* @param callable $next
* @return \Illuminate\Http\Response
*/
public function handle($request, $next)
{
$this->configureSecureCookieSessions();
return (new Pipeline(app()))->send($request)->through(static::fromFrontend($request) ? [
function ($request, $next) {
$request->attributes->set('sanctum', true);
return $next($request);
},
config('sanctum.middleware.encrypt_cookies', \Illuminate\Cookie\Middleware\EncryptCookies::class),
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
//\Illuminate\Session\Middleware\StartSession::class,
config('sanctum.middleware.verify_csrf_token', \Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class),
] : [])->then(function ($request) use ($next) {
return $next($request);
});
}
/**
* Configure secure cookie sessions.
*
* @return void
*/
protected function configureSecureCookieSessions()
{
config([
'session.http_only' => true,
'session.same_site' => 'lax',
]);
}
/**
* Determine if the given request is from the first-party application frontend.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
public static function fromFrontend($request)
{
$domain = $request->headers->get('referer') ?: $request->headers->get('origin');
if (is_null($domain)) {
return false;
}
$domain = Str::replaceFirst('https://', '', $domain);
$domain = Str::replaceFirst('http://', '', $domain);
$domain = Str::endsWith($domain, '/') ? $domain : "{$domain}/";
$stateful = array_filter(config('sanctum.stateful', []));
return Str::is(Collection::make($stateful)->map(function ($uri) {
return trim($uri).'/*';
})->all(), $domain);
}
} app/Http/Kernel.php 'api' => [
\App\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\HandleInertiaRequests::class,
], |
Beta Was this translation helpful? Give feedback.
If anyone finds this in the future, the fix in my case after days and days of experimenting was to remove EnsureFrontendRequestsAreStateful from my middleware groups