[英]Laravel, Lost data in Custom Request class
我将一些数据存储在中间件中,如下所示:
public function handle($request, Closure $next)
{
//checking above..
if($this->authed()){
$request->token= $token; //here store the token in user request
return $next($request);
}
return response('Invalid credentials', 401);
}
然后在控制器中,我调用自定义请求类
//function in controller
public function upload(CoverageValueRequest $request){ //calling a custom request
dd($request->token);
dd($request->all());
}
第一个dd将为null。 但是,如果我将CoverageValueRequest
更改为Request
,它将打印令牌。
PS:$ request数据来自REST调用,使用Content-Type:application / json作为JSON格式。 我不确定这是否相关。
更新
我在中间件中仍然更改了以下行为:
$request->merge(['token' => $token]);
如果CoverageValueRequest
无法获得令牌,但是如果它是Request
则它可以工作。
我已经找到了答案,方法是将令牌设置为请求中间件类的属性:
public function handle($request, Closure $next)
{
//checking above..
if($this->authed()){
$request->attributes->add(['token' => $token]);
return $next($request);
}
return response('Invalid credentials', 401);
}
然后按如下所示在控制器中检索它:
//function in controller
public function upload(CoverageValueRequest $request){ //calling a custom request
dd($request->attributes->get('token'));
dd($request->all());
}
我不确定为什么直接分配或merge
的怪异行为不起作用。 希望有人可以澄清。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.