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);
}
我试图在使用中间件将请求传递给控制器之前更改请求的 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);
}