Laravel 中间件在传递给控制器​​之前更改 header

Laravel Middleware changing header before passing to controller

我试图在使用中间件将请求传递给控制器​​之前更改请求的 header,但似乎 $next($request) 在我的控制器中执行了代码。有没有办法更改 header 然后将更新后的请求发送到我的控制器?

我的中间件:

class JWTAuthenticator
{

public function handle($request, Closure $next)
{   
    $token =JWTAuth::getToken();
    $my_new_token = JWTAuth::refresh($token);
    //it runs here
    $response = $next($request);

    //it runs this part after executing the controller  
    $response->header('Authorization','Bearer '.$my_new_token);
    return $response;
}

中间件是这样分配给我的路由的:

Route::get('/{user}', 'v1\UserController@find')->middleware('jwt_auth');

这样你就可以在请求被处理后执行 $response->header('Authorization','Bearer '.$my_new_token); 语句。 按如下方式更改您的代码:

class JWTAuthenticator
{

public function handle($request, Closure $next)
{   
    $token =JWTAuth::getToken();
    $my_new_token = JWTAuth::refresh($token);

    $request->headers->set('Authorization','Bearer '.$my_new_token);

    return $next($request);
}