首页 > 解决方案 > 控制器没有来自中间件的更改请求

问题描述

我有一个自定义中间件,可以编辑这样的请求:

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在我的控制器中使用它会按预期工作

标签: phplaravellaravel-middleware

解决方案


有人告诉我,如果我使用:

$request->attributes->add(['profileLocal' => $profileLocal]);

在我的中间件中,然后使用:

$request->attributes->get('profileLocal')

它有效,但我不知道这是否是正确的方法。


推荐阅读