I'm using Laravel 5.4 and I wrote something like:
Cookie::queue(
'refresh_token',
$data->refresh_token,
864000, // 10 days
null,
null,
false,
true // HttpOnly
);
return response('hello world');
The returned response doesn't contain the refresh_token cookie while return response('hello world')->withCookie(...)
does.
The Laravel 5.4 documentation doesn't anymore state queueing cookie as 5.0 doc does. Does it mean that the functionality has been removed in version 5.4 or did I make a mistake in my code?
For sake of completeness, I'm using Dingo API package and the response is crafted it.
Thank you for your help.
I found that:
Cookie queuing is not enabled for api requests, this is the reason why it didn't work.
I had to add in the middleware section of the appropriate file:
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
//added below line at end of the array
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
];
Open file App/Http/Kernel.php
add the line \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
in protected $middleware
array as displayed in above code snippet and test again it should work now.