私が直面していた問題に対する私の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を読むと、すべて意味があります。チェリオ!
アクセス権を取得するためにアプリケーションにログインしない場合は、エンドポイントを公開します。そうでなければ、あなたのルートが保護されていれば、何らかの形でアクセストークンを取得する必要があります。 – EddyTheDove
@EddyTheDove、それは私が理解しようとしていることです。私はエンドポイントを保護したい。しかし、同時に、私はそれを呼び出すことができるはずです。ちょうどそれについて進める正しい方法であることを理解しようとしています – alithedeveloper