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