ホームページ >PHPフレームワーク >Laravel >Laravel Pass の落とし穴日記をシェアする

Laravel Pass の落とし穴日記をシェアする

藏色散人
藏色散人転載
2020-09-07 09:13:073152ブラウズ

次は、Laravel Passport のピット日記を共有するための Laravel チュートリアル コラムです。必要とする友人に役立つことを願っています。

Laravel Pass の落とし穴日記をシェアする

これまでのプロジェクトのほとんどは API 認証の実装に DingoAPI JWT-auth を使用していましたが、Laravel は非常に早くから Passport をリリースしましたが、これまであまり注目されていませんでした。
今日パスポートをプレイしました。多くの落とし穴に遭遇しましたが、それでも非常に便利です~

ピット 1: 当面はアカウントとパスワードを通じて取得したいだけですtoken

# パスポートには誕生時に多くのルートが付いています。 。しかし、これらのほとんどは私にとってはまったく役に立ちません。 ##Token
アカウント登録時に使用しますか?
jwt-auth の

JWTAuth::fromUser($user);

は簡単に生成できますtoken、しかし、Passport には既成のメソッドがないようです。 解決策: アカウントを登録した後、積極的に

oauth/token

<pre class="brush:js;toolbar:false;">Passport::routes(function (RouteRegistrar $router) { $router-&gt;forAccessTokens(); }, [&amp;#39;prefix&amp;#39; =&gt; &amp;#39;api&amp;#39;]);</pre> を再度リクエストすると、完璧なソリューションである <pre class="brush:php;toolbar:false;">public function register(Request $request) { $validator = $this-&gt;validator($request-&gt;all()); if ($validator-&gt;fails()){ return response()-&gt;json($validator-&gt;errors()); } event(new Registered($user = $this-&gt;create($request-&gt;all()))); $client = \DB::table(&amp;#39;oauth_clients&amp;#39;)-&gt;where(&amp;#39;password_client&amp;#39;, 1)-&gt;first(); $request-&gt;request-&gt;add([ &amp;#39;username&amp;#39; =&gt; $user-&gt;email, &amp;#39;password&amp;#39; =&gt; $request-&gt;password, &amp;#39;grant_type&amp;#39; =&gt; &amp;#39;password&amp;#39;, &amp;#39;client_id&amp;#39; =&gt; $client-&gt;id, &amp;#39;client_secret&amp;#39; =&gt; $client-&gt;secret, &amp;#39;scope&amp;#39; =&gt; &amp;#39;*&amp;#39; ]); $proxy = Request::create( &amp;#39;oauth/token&amp;#39;, &amp;#39;POST&amp;#39; ); return Route::dispatch($proxy); }</pre> が返されます。

ピット 3: 携帯電話番号を使用してログインしたいです

Passport は実際にはユーザー ログインを動的に変更するためのインターフェイスを提供しますが、それはドキュメント

解決策:

次のメソッドをユーザー モデルに追加します

{
  "token_type": "Bearer",
  "expires_in": 1296000,
  "access_token": "xxx",
  "refresh_token": "xxx"
}

ピット 4: 間違った トークン

を使用すると、パスポートは常にログインにジャンプしますメソッド



ソース コードを確認すると、パスポートが

web

auth ミドルウェアを使用していることがわかります。当然のことながら、リクエスト ヘッダーに Add Accept: application/json

、問題解決

例:

以上がLaravel Pass の落とし穴日記をシェアするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。