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

时间:2013-11-16 20:23:47

标签: php cookies laravel laravel-4

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

不幸的是,设置Cookie只能在全局App::after()过滤器中使用。

我尝试过的第一件事就是从我的Cookie返回一个Controller的回复。

这不起作用:

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(),我在另一个answer找到了它 - 没有运气。

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

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

除了我非常确定其他方法之一应该有效之外,这个解决方案并没有给我提供我正在寻找的控制。

我正在运行Laravel v4.0.9。

1 个答案:

答案 0 :(得分:1)

试试这个经过测试的工作代码 指定到期时间(从现在开始以分钟为单位)。不要在浏览器中使用一些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'));
});