🙆‍♀️

Laravel9でMongoDB を使用している時にPassportを導入する。

2022/08/24に公開

laravel/passport

前提

jenssegers/laravel-mongodbを導入して、mongoDBと接続ができるようになっています。
こちらは導入するだけではダメで、以下のリンク先で記述されているように、一部ライブラリを書き換えたり、色々する必要があります。
GitHub Extending the base model
GitHub Extending the Authenticable base model
【Laravel 9.x対応】MongoDBをLaravelから接続~操作・表示してみよう(サンプル&詳細解説)

また、Dockerを使用している場合はこちらの記事など参考になると思います。
DockerでのLaravel .envの設定

DB_HOST=127.0.0.1にしてる方へ
.env内のDB_HOST=db
db部分は、コンテナ名にしなければいけませんYO。

passportの導入

[Laravel 9.x Laravel Passport]
(https://readouble.com/laravel/9.x/ja/passport.html)

  • パッケージのインストール

composer require laravel/passport

  • mongoDBでも使用できるように、ライブラリをいくつか書き換える
  • "{{Laravelプロジェクト}}/vendor/laravel/passport/src/に移動"
  • 以下の対象ファイルで、use Illuminate\Database\Eloquent\Model;
    use Jenssegers\Mongodb\Eloquent\Model;`に変更

    ↓対象ファイル↓
    AuthCode.php,PersonalAccessClient.php,Client.php,Token.php

こちらの記事が参考になります。

  • マイグレート

php artisan migrate

  • 安全なアクセストークンを生成するために必要な暗号化キーを作成

php artisan passport:install

ここまででいけたら、下を参考に処理を記述していってください。
Laravel Passportを使用したPHPによるセキュアなAPIの構築

↑記事のLaravelのversionが少し古いので、基本的な処理はLaravel9と同じですが、部分部分、Laravel9に対応させる必要があります。

成功するはず。。

Discussion