如何使用中间件在Laravel中发送授权access_token以请求标头

时间:2018-07-22 06:54:46

标签: php laravel laravel-5 laravel-middleware laravel-response

我构建了API身份验证系统。我可以使用Postman进行检查的所有内容,但我想附加此标记部分(please see the image),这意味着标头部分是从控制器或中间件发送的,并带有请求标头。

我该怎么做。 请参阅我的代码示例。

图片。 enter image description here

我尝试使用中间件。

 public function handle($request, Closure $next)
{
    $token='Bearer '.$request->bearerToken();
    $response=$next($request);
    $response->header('Authorization',$token);

    return $response;
}

在Kernal中注册的中间件。

protected $middlewareGroups = [

    'Header'  =>[
        \App\Http\Middleware\HeaderMiddleware::class
    ],
];

和我的routes\api.php

Route::group(['middleware' => ['auth:api','Header']], function(){
Route::post('details', 'API\PassportController@details');
Route::get('test','API\PassportController@test');
});

当我使用中间件时,会在Postman中显示此结果。 enter image description here

2 个答案:

答案 0 :(得分:1)

可以在中间件中添加一些自定义标头。要将自定义标头添加到响应中,您需要这样做:

$response = $next($request);
$response->headers->set('Authorization', 'Bearer '.$request->bearerToken());

答案 1 :(得分:0)

您可以执行以下操作:

 $response = $client->request('POST', '/api/details', [
    'headers' => [
        'Authorization' => 'Bearer '.$token,
        'Accept' => 'application/json',
    ],
]);