2017-04-10 2 views
1

私は完全に動作するOAuthリクエストを処理するためにPassportを使用しています。しかし、私はリクエストするためのユーザーインスタンスとAPIエンドポイントを必要としないシナリオがいくつかあります。静的リストなど私はそれのミドルウェアを作成し、それは正常に動作します。最後に、開発者にトークンまたはOAuthを使用してそれらのエンドポイントに投稿する自由を与えたいリストのようなものを引き出すシナリオがあります。そしてそれを行う方法に苦労して...Laravel別のミドルウェアが失敗した場合にミドルウェアを呼び出す

誰もが洞察力を持っていますか?私はいつもトークンミドルウェアを呼び出してから、トークンミドルウェアから通常のパスポートOAuthを呼び出すことができると思っていますか?しかし、どうやってそれをやっていくのかは分かりません。

このシナリオでは、1つ失敗した場合にはブートしてしまいます。存在しない場合はトークンをチェックしたい場合は、OAuthトークンをチェックしてから通常の動作に従ってください。

Route::group(['middleware' => 'token:auth:api', 

これを行う方法については、ドキュメントのどこにも表示されません。しかし、多分私は何かを逃している。

乾杯

Citti

+0

ユーバーのハンドル()関数は自分のAPIで、この多くをしている - https://developer.uber.com/docs/riders/references/api/v1.2/products-get – Citti

+0

私はあなた自身のミドルウェアを書く必要があると思います。 – dparoli

+1

@Cittiは問題の適切な解決策を見つけられましたか?自分自身でこの問題に直面した。 – Drazxier

答えて

0

あなたは別のミドルウェアをすることによってこれを達成することができます。そのミドルウェアではまずトークンミドルウェアを呼び出し、失敗した場合はパスポートOAuthミドルウェアを呼び出します。私はTymon JWTを使ってトークンを認証しようとしましたが、失敗した場合はLaravel Passport OAuthを使って認証します。以下のミドルウェア

public function handle($request, Closure $next) 
{ 
    try { 
     return app(\Tymon\JWTAuth\Http\Middleware\Authenticate::class)->handle($request, function ($request) use ($next) {   //JWT middleware 

      return $next($request); 
     }); 
    } catch (\Exception $exception) { 

     if ($exception instanceof UnauthorizedHttpException) { 
      return app(\Laravel\Passport\Http\Middleware\CheckClientCredentials::class)->handle($request, function ($request) use ($next) { 
       return $next($request); 
      }); 
     } 
     throw $exception; 
    } 

} 
関連する問題