首页 > 解决方案 > 如何在自定义命令中设置 cookie 并在中间件 Laravel 中获取

问题描述

我正在寻找在控制台自定义命令中设置 cookie 并在 Laravel(版本 - 5.2)的中间件中获取它的方法。这就是我正在尝试的

在自定义命令中,

Cookie::queue('login', 'true', 1);
$cookies = array('login' => true);

在中间件中,

Cookie::get('login') // unable to get here set cookie

通过自定义命令内部调用路由

$req = Request::create('/my/url', 'POST', $params, $cookies);
$res = app()->handle($req);
$responseBody = $res->getContent();

参考 symfony/http-foundation 内部调用路由

您的帮助将不胜感激。

标签: phplaravel-5

解决方案


我认为您已经创建了一个middleware,假设CookieMiddlware。所以里面CookieMiddlware有一个handle方法。有尝试dd($request);

例如:

public function handle($request, Closure $next)
{
    dd($request);
    //return $next($request);
}

注册您的中间件,然后将其应用于路由。点击该路线,您将看到完整的请求数据。在那里你会找到饼干。打开它并玩它。

如果您已正确设置 cookie,则可以从中间件中的请求中获取它。

+cookies: ParameterBag {#45 ▼
#parameters: array:3 [▼
  "laravel_session" => "FDyl3cnxEy3VDIiivxLQmDDbyZuJggeU8"
  "XSRF-TOKEN" => "7TQrk9QZKrpPPrgoaAXNOIZlThrePlesjQJ"
  "etc" => "2zbP5hem9RcvBcQwBz8UewwZxWQxQAcA4"
 ]
}

你可以像这样访问它$request->cookie('name');,我想你知道其余的。它可能会帮助你。

以这种方式检查。

$cookies = array('login' => "akhtar");
$ar = json_encode($cookies);
Cookie::queue('test',$ar,100);
dd(json_decode(Cookie::get('test')));

推荐阅读