問題タブ [laravel-passport]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2274 参照

php - laravelパスポートを使用してAPIルートから新規ユーザーを登録する

laravel 5.3パスポートパッケージをインストールしました。POST /oauth/token次のパラメータで次のルートを使用できます。

  1. ユーザー名
  2. パスワード
  3. client_secret
  4. grant_type
  5. クライアントID

そして、私は次の応答を受け取ります

それから私は要求しますGET /api/user

次のヘッダーで

  1. Authorization = "ベアラー アクセス トークンはこちら"
  2. accept = アプリケーション/json (オプション)

これは正常に動作するため、すべてのAPIです。

私が抱えている問題は、最初のリクエストで認証してユーザー名とパスワードを入力したユーザーであり、返されたアクセストークンは、laravel web view /register から作成したユーザーです

APIルートファイルから新しいユーザーを作成したり、新しいユーザーを登録したりするにはどうすればよいですか

お気に入りPOST /api/register

ユーザーは最初に登録して、その後認証を受ける必要があります。

登録するためにoauthなしでこのルートを作成する必要がありますか?登録が成功した場合、彼は認証を要求POST /oauth/tokenしますか? 何か不足していますか??

clent_secretすべてのユーザー要求で一定であることが正しいのか、それとも各ユーザーが異なる clent_secret を持っているべきなのかを更新 してください。

0 投票する
2 に答える
1225 参照

laravel - Passport を使用して独自の API を使用する Laravel 5.3 Web アプリの承認ポリシー/ゲート

Laravel 5.3 を使用して、独自の API を使用する Web アプリをセットアップしました。認証は Passport によって正常に処理されました。Web アプリは、ルートで認証ミドルウェアを使用し、承認のためにモデル ポリシーを使用します。API ルーティングは、デフォルトの「auth:api」トークン ガードを使用してアクセスを制御します。

アプリ/ポリシーで API 認証と Web 認証に同じポリシーを使用したいのですが、方法がわかりません。などの通話$this->authorize('view', $model)はできません。Auth::guard('api')->user()どうにかしてユーザーをポリシーに渡す必要があると思いますか?

どんな助けでも大歓迎です!

更新: 動作しました。

API 呼び出しでも、Laravel は Web ガードのユーザーを使用してポリシーをチェックしているようです。このユーザーは、API 呼び出しに対して未定義です。そのため、すべての API 呼び出しで api ガードを使用する必要があることを Laravel に伝える必要がありました。

  1. Auth::shouldUse('api');handle 関数で新しいミドルウェアを作成します。
  2. ミドルウェアをカーネルの api セクションに割り当てます。

Laravel は、すべての API リクエストに対して api ガードを使用するようになりました。like の呼び出し$this->authorize('view', $model)は、Web と API の両方で機能します。