Laravel9でMongoDB を使用している時にPassportを導入する。
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