2017-01-31 3 views
3

私は、顧客用の外部APIを構築することになっています。ビジネスデータを一切提供することなく、データベースはワークフロー全体で構成されています。発生したイベント、関連するチケットおよびその他の情報は、すべてお客様が区別できます。Laravel APIプロジェクト - 設計と認証

非常に単純なエンドポイントでAPIを作成したいと考えています。各テーブルには、例えばチケットは、私は2つのエンドポイントを持っているしたいと言う:、これらの空路は彼らだけが関連しているため、これらのDBのレコードを返します認証する任意の顧客のために

/tickets   #will return a list of tickets and general information 
/ticket/<ticket_id> #More detailed information about the specific ticket 

私はこれまでLaravelにこのようなシステムを書いていません。私はPassportが行く方法であることを理解して正しいですか?私は、このタイプの認証を安全に行うためのより簡単な方法があるかどうかを尋ねていると思います(Passport Overkill)?少数の顧客がいて、その認証を設定しても問題ない場合は、証明書はより良い方法でしょうか?または、Passportを使用していないことが間違いなので、OAuth2は業界標準のようなものですか?

Passportが最適な場合は、OAuth2サーバーとアプリケーションサーバーを別々のサイトにする方がよいでしょうか、それとも1つのアプリケーションに結合できますか?

ありがとうございました。

+0

私は質問が好きですが、カバーするために多くのオープンエリアで1つ以上の質問をします。広範囲に表示される可能性があります。 +1前に – davejal

答えて

3

パスポートを使用することをお勧めしますが、ユーザーにapi_token属性を指定することで簡単なAPI認証を使用することはできます。リクエストヘッダーにそのトークンを設定すると、Laravelは自動的にユーザーを認証します。ただし、auth:apiミドルウェアを使用する必要があります。

auth:apiミドルウェアを使用している場合は、コントローラ$user = Auth::guard('api')->user();で行うことができ、リクエストを送信したユーザが自動的に返されます。

この投稿はうまく何をすべきかを説明しています:https://gistlog.co/JacobBennett/090369fbab0b31130b51

  1. routes/api.php

    Route::group(['middleware' => 'auth:api', 'prefix' => 'v1'], function() { Route::resource('tickets', 'TicketController'); });

にミドルウェアでグループ化されたルートを定義する文字列としてユーザーの移行にapi_tokenを追加し、あなたが行ってもいいです:それは、次の手順を提供します。ハンドル付き

Route::resource()限り、あなたはあなたのコントローラでpublic function index()public function show()を定義すると、両方の/tickets/tickets/123

v1という接頭辞の付いたAPI呼び出しのURLはhttp://website.com/api/v1のようになります。

+0

'api_token'は新しいlaravel web api apps devsのためのシンプルで安価です。 –

+0

素晴らしい、この情報に感謝! 1つまたは2つのアプリでPassportに対処することができたら、パスポートをお勧めします。パスポートをアプリにロープすることができますか、それともそれらを別々に保つ方が良いでしょうか? – ParserDoer

+0

私は100%あなたの質問を理解していませんが、私はそれがあなたの最後の質問に関係していると思います。 Yest、あなたは1つのアプリですべてを組み合わせることができます。それは私が小規模なプロジェクトのためにしていることです。しかし、多くのチームメンバーを抱えるもっと大きなプロジェクトでは、通常、フロントエンド(AngularJS、ReactJS)からバックエンド(Laravel)を分割します。すべての場合において、 'passport'または' api_token'を使用することができます。 – EddyTheDove