2017-01-03 11 views
0

Laravel Dingoを使用して、Laravelコントローラ内でAPIリクエスト(内部的に)を消費しており、ヘッダーのトークンで認証されたルートに関する問題が発生しています。リクエストでトークンを探して例外がスローされました。Laravel Dingo認証内部要求にJWTが必要

これは私のAPIのルートです:

$api = app('Dingo\Api\Routing\Router'); 

$api->version(['v1'], function ($api) { 
$api->post('/users/addEmployee', "App\Http\Controllers\Api\[email protected]")->middleware('jwt.auth'); 
} 

はミドルウェアがコールに追加します。郵便配達郵便を使用するとき、これは100%働いて、新しい従業員を追加します。

Dingoで内部呼び出しを行うと、認証ヘッダーが見つからないときに一般的にAPIから表示される典型的な「トークンが見つかりません」というエラーが返されます。

try{ 
      $dispatcher = app('Dingo\Api\Dispatcher'); 

      $payload = [ 
         'name' => $request->name, 
         'email' => $request->email, 
         ]; 


      $registerResponse = $dispatcher->be(Auth::user())->with($payload)->post('/api/users/addEmployee'); 

     catch(InternalHttpException $internal){ 
     echo($internal->getResponse());die(); 
     return Redirect::back()->withInput()->withErrors($v->getErrors()); 
     } 

私の質問はこれです、私はトークンを追加する必要がある、または内部要求のためにJWTミドルウェア「をオフにする」にする方法はありますか? Dingo内で - >メソッドがこれをすべて処理しないのでしょうか? p.s. Auth :: userがnullではないことを確認しました。

答えて

0

解決済みの場合は、ディスパッチする前にアウトバウンドリクエストに手動でヘッダーを設定することができます。このメソッドはドキュメントのどこにも表示されませんでしたが、動作しました。

$token = JWTAuth::fromUser(Auth::user()); 
    $registerResponse = $this->api->header('Authorization','Bearer:'.$token)->with($payload)->be(Auth::user())->post('/api/users/addEmployee'); 
関連する問題