繁体   English   中英

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM