次は、Laravel Passport のピット日記を共有するための Laravel チュートリアル コラムです。必要とする友人に役立つことを願っています。
これまでのプロジェクトのほとんどは API 認証の実装に DingoAPI JWT-auth を使用していましたが、Laravel は非常に早くから Passport をリリースしましたが、これまであまり注目されていませんでした。
今日パスポートをプレイしました。多くの落とし穴に遭遇しましたが、それでも非常に便利です~
token
# パスポートには誕生時に多くのルートが付いています。 。しかし、これらのほとんどは私にとってはまったく役に立ちません。 ##Token
アカウント登録時に使用しますか? jwt-auth の
、しかし、Passport には既成のメソッドがないようです。
解決策: アカウントを登録した後、積極的に <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">Passport::routes(function (RouteRegistrar $router) {
$router->forAccessTokens();
}, [&#39;prefix&#39; => &#39;api&#39;]);</pre><div class="contentsignin">ログイン後にコピー</div></div>
を再度リクエストすると、完璧なソリューションである <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()){
return response()->json($validator->errors());
}
event(new Registered($user = $this->create($request->all())));
$client = \DB::table(&#39;oauth_clients&#39;)->where(&#39;password_client&#39;, 1)->first();
$request->request->add([
&#39;username&#39; => $user->email,
&#39;password&#39; => $request->password,
&#39;grant_type&#39; => &#39;password&#39;,
&#39;client_id&#39; => $client->id,
&#39;client_secret&#39; => $client->secret,
&#39;scope&#39; => &#39;*&#39;
]);
$proxy = Request::create(
&#39;oauth/token&#39;,
&#39;POST&#39;
);
return Route::dispatch($proxy);
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
が返されます。 ピット 3: 携帯電話番号を使用してログインしたいです
Passport は実際にはユーザー ログインを動的に変更するためのインターフェイスを提供しますが、それはドキュメント
解決策:次のメソッドをユーザー モデルに追加します
{ "token_type": "Bearer", "expires_in": 1296000, "access_token": "xxx", "refresh_token": "xxx" }
ソース コードを確認すると、パスポートが
ミドルウェアを使用していることがわかります。当然のことながら、リクエスト ヘッダーに
Add Accept: application/json例:
以上がLaravel Pass の落とし穴日記をシェアするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。