php - 控制器没有来自中间件的更改请求
问题描述
我有一个自定义中间件,可以编辑这样的请求:
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')
它有效,但我不知道这是否是正确的方法。
推荐阅读
- postgresql - 导入包含索引中使用的函数的 SQL 转储时出错
- ios - 在移动设备上滑动(iPad 设置屏幕)始终在右半边滑动。如何在左半部分执行滑动
- javascript - 我如何将数据从 ejs(日期选择器)传递到 js(查询 db),然后在 ejs(在标签中)中显示结果?
- javascript - 为什么表单文本输入的 parseFloat(value) 会给出 NaN?
- ios - Xcode 10.2 是否支持最新的 NativeScript?
- javascript - 有没有办法只在基于数组的 json 对象中显示选定的属性
- azure - 如何通过 API 启用/禁用项目服务
- php - iframe 嵌入视频与 php 变量作为源不工作
- python - 如何将 YAML 数据放入字典并打印某些值?PYTHON
- mysql - mysql_query 出现问题并通过 sprintf() 在其中插入变量