Laravel7まではLaravel UIしか無かったのに
https://readouble.com/laravel/7.x/ja/authentication.html
Laravel8になってからなんか色んな選択肢が増えた。
認証バックエンドライブラリ
アプリケーションスターターキット
ざっくり各種パッケージの説明
Laravel Sanctum
APIトークン、SPA認証、チームの機能など盛りだくさん
Laravel Jetstream
https://readouble.com/jetstream/1.0/ja/api.html
https://readouble.com/jetstream/1.0/ja/authentication.html
Laravel JetstreamはファーストパーティとしてLaravel SanctumとLaravel Fortifyを統合しているアプリケーションスターターキット。
https://readouble.com/jetstream/1.0/ja/installation.html
jetstreamをインストールする際にLivewireかInertia.jsを選ぶ必要がある。
機能
'--teams'オプションの説明
https://readouble.com/jetstream/1.0/ja/teams.html
メール認証
https://reffect.co.jp/laravel/laravel-email-verification
Livewire
特徴
- ページをリロードすることなくページの更新することができる。
- Bladeに拡張する感じなので、学習コストがかかる。
- Laravelのみでしか使えない。
- UIはTailwind CSS
vue.jsとかでやることを無理やりphpだけでやろうとしてる感がする。
Inertia.js
特徴
- Vue Routerは使わない
- API(axios)を使わずにvue.jsとControllerをつないでくれるイメージ
- UIはTailwind CSS
https://reffect.co.jp/laravel/laravel-inertia-js
https://reffect.co.jp/laravel/laravel-inertia-js-crud
https://qiita.com/Ayumu_Usu/items/9bc9c8684222f2eed7cd
https://qiita.com/Ayumu_Usu/items/9bc9c8684222f2eed7cd
Laravel Fortify
https://readouble.com/laravel/8.x/ja/fortify.html
シンプルな認証機能。
Laravel UIのバックエンドほどんど同じ機能だと思う。
Laravel Breeze
Laravel BreezeはファーストパーティとしてLaravel Fortifyを統合しているアプリケーションスターターキット。
特徴
- フロントはBladeでUI部分はTailwind CSS
- フロント部分はInertia.jsに変更可能
Laravel UI
https://readouble.com/laravel/8.x/ja/frontend.html
Bootstrap、React、Vueの中から好きなUIを選べる。
後は基本的なAuthに必要なControllerとかが自動で生成される。
Laravel8ではこちらは推奨されていない模様。
まとめ
コアのバックエンド部分のみ必要でフロントは自分で作る場合はLaravel SanctumかLaravel Fortifyのみをインストールすれば良さそう。
もしAPI認証、二段階認証などの機能が必要な場合はLaravel Sanctum、シンプルな認証機能だけならLaravel Fortifyという感じで選べばいいと思う。
アプリケーションスターターキットを使わない実装例(Laravel Sanctum + Vue.js)
https://qiita.com/hikkappi/items/b95626bb51bbf2ebcd2d
UIもできているものを使いたい場合はLaravel JetstreamかLaravel Breezeを選択する。
こちらの選び方はバックエンドのファーストパーティとしてLaravel SanctumかLaravel Fortifyどちらを使いたいかによって変わってくる。
Laravel FortifyとLaravel Sanctum
一部の開発者は、Laravel SanctumとLaravel Fortifyの違いについて混乱します。 2つのパッケージは2つの関連はあるが別々の問題を解決するため、Laravel FortifyとLaravel Sanctumは相互に排他的、もしくは競合するパッケージではありません。
Laravel Sanctumは、APIトークンの管理と、セッションCookieまたはトークンを使用した既存のユーザーの認証のみに関係しています。 Sanctumは、ユーザー登録、パスワードのリセットなどを処理するルートを提供していません。
APIを提供するアプリケーション、またはシングルページアプリケーションのバックエンドとして機能するアプリケーションの認証レイヤーを自前で構築しようとしている場合は、Laravel Fortify(ユーザー登録、パスワードのリセットなど)およびLaravel Sanctum(APIトークン管理、セッション認証)の両方を利用すのは完全に可能です。
引用元: https://readouble.com/laravel/8.x/ja/fortify.html
API認証をしたいケース
API認証をしたい場合はLaravel Sanctumを選択したほうがいいと思います。
https://reffect.co.jp/laravel/laravel-sanctum-token
※ Laravel Fortifyでも自分で作れば二段階認証できる。
https://turningp.jp/programing/php/laravel/fortify-2fa