2017-04-01 2 views
0

私は実行可能な解決策を見つけるためにしばらくブラウジングしています。Laravelアプリケーション内でVueコンポーネントを使用する特定のエンドポイントのAPIを使用する

私はLaravelアプリケーションを持っています。特定のエンドポイントを持っています。APIルートです。

私はアプリケーション自体にログインすることなくデータを消費したいと思います。身体が正しい方向に私を導くことができたら、私は感謝します。私は、しかし、私は、彼らが簡単にを見ることができるようにアヤックス呼び出しでclient_idまたはclient_secretのような特定の情報を渡すために好きではないだろう、パスポートに見てきました。

+0

アクセス権を取得するためにアプリケーションにログインしない場合は、エンドポイントを公開します。そうでなければ、あなたのルートが保護されていれば、何らかの形でアクセストークンを取得する必要があります。 – EddyTheDove

+0

@EddyTheDove、それは私が理解しようとしていることです。私はエンドポイントを保護したい。しかし、同時に、私はそれを呼び出すことができるはずです。ちょうどそれについて進める正しい方法であることを理解しようとしています – alithedeveloper

答えて

0

両方を持つことはできません。ルートを保護することはできず、認証せずにルートを呼び出すことはできません。次に、認証されていないものにアクセスできる場合は、まず保護する必要はありません。あなたの人生を楽にし、同じルートを2回定義します。一旦ミドルウェアに入ったら、いったんミドルウェアから外してください。

Route::get('link', '[email protected]'); 

Route::group(['middleware' => 'auth:api'], function(){ 
    Route::get('link', '[email protected]'); 
}); 

ここでは、保護されたルートと保護されていないルートの両方があります。しかし、私が言ったように、誰も認証せずにアクセスできるので、それは文字通り保護されていません。

+0

私はエンドポイントを公開し、そこからデータを取得することを認識しています。たぶん私は私の質問で十分に明確ではなかった。私が達成したいのは、私がエンドポイントに安全にぶつかることができる方法です。エンドユーザーがそのエンドポイントを参照すると、指定されたページにリダイレクトされます。したがって、固有のトークンまたは情報を使用してコンポーネントからエンドポイントを呼び出すことができます。エンドポイントは、その要求が内部であるかどうかを確認し、必要なデータを吐き出します。 – alithedeveloper

+0

そうだと思います。データベースからトークンをコピーして、リクエストヘッダーに手動で追加してください。それでおしまい。 – EddyTheDove

0

私が直面していた問題に対する私の2セントアプローチです。将来的にはある人を助けるかもしれない。

JWTがどのように機能しているのかを十分に研究して理解した上で、まだそれを完全に理解するためにもう少し詳しく研究する必要があります。しかし、概観を得るために、私はhttps://scotch.io/tutorials/the-anatomy-of-a-json-web-token以外の簡単な言葉で説明するためのより良い記事を見つけることができません。

今、JWTの仕組みを理解した後は、私の頭を全体の流れに巻き込むのは簡単でした。だから私はそれに近づいた。私の会社の内部APIの作業中に、特定のエンドポイントへのリクエストが$ request-> api()から簡単に取得できるホワイトリストのAPIから来ているかどうかをチェックするミドルウェアを作成しました。

次に、tymondesignsによって優れたパッケージをhttps://github.com/tymondesigns/jwt-authにインストールしました。私はインストールに続き、秘密鍵を生成しました。ここで楽しい部分が来る。

ログインする必要なくエンドポイントを保護したいので、自分のユーザーテーブルから特定のユーザーを取得し、そのユーザーオブジェクトからJWTトークンを作成した独自のミドルウェアを作成しました。

$ user = App \ User :: whereEmail( 'email') - > first() $ token = JWTAuth :: fromUser($ user);

トークンを取得したら、私のエンドポイント、つまり/ api/v1/users?token = {generatedToken}とvoilaを呼び出すだけでした。すべて行こうと思う。しかし、我々はまた、再びパッケージはありがたい2つのミドルウェア

jwt.authを提供し、

jwt.authミドルウェアは、資格情報を通じてトークン使用して認証方法を作成しようとjwt.refreshれ、一定時間後にトークンをリフレッシュする必要がありますだから私は上記のようにユーザーを認証し、トークンをjwt.refreshesするミドルウェアのためにそれを入れ替えました。

私が言及した記事を読んで、パッケージwikiを読むと、すべて意味があります。チェリオ!

関連する問題