Laravel,自定义请求类中的丢失数据


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,它将打印令牌。

p.S:来自REST调用的$request数据为JSON格式,使用Content-Type:application/JSON。我不确定这是否相关。

更新

我在中间件中改变了以下仍然相同的行为:

$request->merge(['token' => $token]);

如果是CoverageValueRequest,则无法获得令牌,但如果是Request,则可以工作。

我通过将token设置为请求的属性找到了答案,中间件类:

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的奇怪行为不起作用。希望有人能澄清。