Laravel 5.4 - Cookie 队列

Posted

技术标签:

【中文标题】Laravel 5.4 - Cookie 队列【英文标题】:Laravel 5.4 - Cookie Queue 【发布时间】:2017-12-24 03:48:39 【问题描述】:

我使用的是 Laravel 5.4,我写了类似的东西:

     Cookie::queue(
        'refresh_token',
        $data->refresh_token,
        864000, // 10 days
        null,
        null,
        false,
        true // HttpOnly
    );

    return response('hello world');

返回的响应不包含 refresh_token cookie,而 return response('hello world')->withCookie(...) 包含。

Laravel 5.4 文档不再像 5.0 文档那样声明排队 cookie。 这是否意味着该功能在 5.4 版本中已被删除,还是我的代码有误?

为了完整起见,我使用的是 Dingo API 包并制作了响应。

感谢您的帮助。

【问题讨论】:

小心,“10天”的评论不好。该值以分钟而不是秒为单位传递。要在 10 天内到期,您需要 10*24*60 = 14400 【参考方案1】:

我发现:

api请求没有启用cookie排队,这就是它不起作用的原因。

我必须在相应文件的中间件部分添加:

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,
    ];

打开文件App/Http/Kernel.phpprotected $middleware数组中添加\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,行,如上面代码sn-p所示,再次测试它现在应该可以工作了。

【讨论】:

你救了我的命 :) 壮观的答案!【参考方案2】:

如果有人喜欢 Google首先它。 OP 并非如此,但正是它把我带到了这里。 ;)

【讨论】:

以上是关于Laravel 5.4 - Cookie 队列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.4 中存储数组 cookie?

Laravel 5.4 和数据表 - Ajax - 保存/发布数据 - 服务器端

带有 Laravel 5.4 后端的 Vuejs 2,发布(未经授权)错误

同一域名下的两个laravel项目

Laravel 5.3 到 5.4 (mPdf - niklasravnsborg/laravel-pdf ) 升级问题

laravel-5.4 - 错误:从空值创建默认对象