Search code examples
laravelcookiesdingo-api

Laravel 5.4 - Cookie Queue


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.


Solution

  • 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.