我尝试在特定路线中设置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。
答案 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'));
});