在 Laravel 4 中设置 Cookie 仅适用于 App::after()



我尝试在特定路线中设置Laravel 4中的Cookie

遗憾的是,设置Cookie仅在全局App::after()筛选器中有效。

我尝试的第一件事是返回带有Controller Cookie的响应。

这不起作用:

return Response::make($view)->withCookie(Cookie::make('foo','bar'));

但是,这确实:

return Response::make()->withCookie(Cookie::make('foo','bar'));

但不能解决我的问题。

接下来,我尝试使用after过滤器,如下所示。

Route::filter('cookie', function($route, $request, $response)
{
    $response->withCookie(Cookie::make('foo', 'bar'));
});

这也行不通。

接下来,我尝试使用 Cookie::queue() ,我在另一个答案中找到了它 - 没有运气。

正确设置Cookie的唯一位置是在App::after() 中。

App::after(function($request, $response)
{
    $response->withCookie(Cookie::make('foo', 'bar'));
});

此外,我很确定其他方法之一应该有效,这个解决方案并没有给我我正在寻找的控制权。

我正在运行 Laravel v4.0.9。

试试这个经过测试的工作代码。
指定过期时间(从现在起的分钟为单位)。您是否不要在浏览器中使用某些cookie扩展程序,这可能会保护/黑名单指定的cookie不被修改...

Route::get('cookieset', function(){
    $cookie = Cookie::make('foo', 'bar', 60);
    return Redirect::to('cookieget')->withCookie($cookie);
});
Route::get('cookieget', function(){
    dd(Cookie::get('foo'));
});

最新更新