2017-10-11 17 views
1

私はDingo APIを使用したAPIを持っています。したがって、現在のユーザーは X-Api-Keyヘッダーを認証に使用します。 ヘッダーが必要なAPIシステムを実装したlaravelsに切り替えたいと考えています。laravel認証前にヘッダーを変更する(トークンベース/ api)

laravelにどのヘッダを使用するかを伝えることは可能ですか? または認証が行われる前に、ヘッダーを変更するために使用できるフックがありますか(X-Api-Keyヘッダーの値をAuthorizationヘッダーにコピーするなど)

+0

これは、Laravelのミドルウェアを使用して行うことができます。 –

答えて

1

あなたはこのようにミドルウェアを作成することができます。

<?php 

namespace App\Http\Middleware; 

use Closure; 

class ModifyHeader extends BaseAuthorize 
{ 
    public function handle($request, Closure $next) 
    { 
     if ($authorization = $request->header('X-Api-Key')) { 
      $request->headers->set('Authorization', $authorization); 
     } 

     return $next($request); 
    } 
} 

次に、あなたはこのように、たとえば$ middlewareGroupsまたは$ routeMiddlewareに、このミドルウェアを追加する必要があります。

protected $middlewareGroups = [ 
    'api' => [ 
     // ... 
     \App\Http\Middleware\ModifyHeader::class, 
    ], 
    // ... 
]; 

、その後、あなたはそれを確認する必要があります変更するルートはapiミドルウェアです。もちろん、このためにカスタムミドルウェアグループを作成したり、選択したルートに適用したりすることもできます。

次に、あなたがそのようなルートを追加した場合たとえば:

Route::group(['middleware' => 'api'], function() { 
    Route::get('/test', function() { 
     dd(request()->header('Authorization')); 

    }); 
}); 

あなたはX-Api-Keyヘッダで渡されるのと同じ値を取得する必要があります。

+0

は、Webまたはapi middlewareGroupsにありますか? – Maraboc

+1

@Marabocあなたは正しく、ミドルウェアグループがどのように編成されているかは、作者のアプリケーションに依存しますが、このような使い方のために 'api'ミドルウェアでこれを実証する方が良いです –

関連する問題