控制器没有来自中间件的更改请求
Controller doesnt have the alter request from the middleware
我有一个自定义中间件可以像这样编辑请求:
public function handle($request, Closure $next)
{
$profileLocal = ProfileLocal::where(
'id', JWTHelper::tokenExtractProfileLocalID($request->token)
)->with('status')->first();
if (empty($profileLocal) || $profileLocal->status->email_verified == 0 || $profileLocal->status->blocked == 1) {
return $this->respondError('You dont have access to this store', 336);
}
$request->profileLocal = $profileLocal;
return $next($request);
}
但是,当我尝试访问 $request->profileLocal
在我的控制器中时:
public function deviceSet(DeviceRequest $request)
{
dd($request->profileLocal);
}
即使在我的 DeviceRequest 中,如果我尝试 dd(request()->profileLocal)
它工作正常,我也会返回 null?
有谁知道我在这里做错了什么?
我注意到如果我在我的控制器中使用 request()->profileLocal
它会按预期工作
我被告知如果我使用:
$request->attributes->add(['profileLocal' => $profileLocal]);
在我的中间件中,然后使用以下方式访问它:
$request->attributes->get('profileLocal')
有效,但我不知道这是否正确。
如果您想向请求添加一个值并能够将其作为 属性 访问,您可以将其添加到基础 request
属性:
$request->request->add([
'profileLocal' => $profileLocal
]);
// or $request->request->add(compact('profileLocal'))
然后您将能够通过以下方式访问控制器中的值:
$request->profileLocal
当您调用 all()
或 input()
.
等方法时,此值也将包含在内
我有一个自定义中间件可以像这样编辑请求:
public function handle($request, Closure $next)
{
$profileLocal = ProfileLocal::where(
'id', JWTHelper::tokenExtractProfileLocalID($request->token)
)->with('status')->first();
if (empty($profileLocal) || $profileLocal->status->email_verified == 0 || $profileLocal->status->blocked == 1) {
return $this->respondError('You dont have access to this store', 336);
}
$request->profileLocal = $profileLocal;
return $next($request);
}
但是,当我尝试访问 $request->profileLocal
在我的控制器中时:
public function deviceSet(DeviceRequest $request)
{
dd($request->profileLocal);
}
即使在我的 DeviceRequest 中,如果我尝试 dd(request()->profileLocal)
它工作正常,我也会返回 null?
有谁知道我在这里做错了什么?
我注意到如果我在我的控制器中使用 request()->profileLocal
它会按预期工作
我被告知如果我使用:
$request->attributes->add(['profileLocal' => $profileLocal]);
在我的中间件中,然后使用以下方式访问它:
$request->attributes->get('profileLocal')
有效,但我不知道这是否正确。
如果您想向请求添加一个值并能够将其作为 属性 访问,您可以将其添加到基础 request
属性:
$request->request->add([
'profileLocal' => $profileLocal
]);
// or $request->request->add(compact('profileLocal'))
然后您将能够通过以下方式访问控制器中的值:
$request->profileLocal
当您调用 all()
或 input()
.