LaravelのFortifyを使えば、ユーザー登録・ログイン機能といった認証機能のバックエンド部分を手軽に搭載できます。メール認証や二段階認証といった高度な機能も使えます。
ただデメリットとしては、Fortifyはバックエンド部分しか提供してくれず、フロントエンド部分はすべて自分で行わなければいけません。
つまり、
「フロントエンドをすべていちから作りたい!」
という方には、fortifyはおすすめです。
インストール方法と初期設定の方法を解説していきますね。
Laravel Fortifyのインストール方法
①新規プロジェクトの作成
まずはLaravelで新規プロジェクトを作成し、データベースも準備します。
下記の記事を参考にしてください。
「初心者のためのLaravel入門:認証設定とBootstrap設定もしておこう」の前まで行ってくださいね。
②fortifyインストール
cdコマンドでLaravelをインストールしたプロジェクトに移動します。
下記コマンドを実行して、fortifyをインストールします。
1 |
composer require laravel/fortify |
下記コマンドで関連ファイルを作成します。
1 |
php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider" |
③マイグレート
マイグレートを実行します。
1 |
php artisan migrate |
これでインストール完了です。
次に設定を進めていきます。
Laravel Fortifyの設定
①config/app.php設定
app/config/app.phpファイルの177行目あたりに、下記を追加します。
1 |
App\Providers\FortifyServiceProvider::class, |
【追加後のapp.php】
②登録とログイン画面設定
次に登録とログイン用画面の設定をしましょう。
app/Providers/FortifyServiceProvider.phpファイルを開きます。
public function boot() に、下記の2つの設定をします。
【FortifyServiceProvider.php】
1 2 3 4 5 6 7 8 9 |
public function boot() { Fortify::registerView(function () { return view('auth.register'); }); Fortify::loginView(function () { return view('auth.login'); }); |
これによって
- 登録用のビューはresources/view/auth/register.blade.php
- ログイン用のビューはresources/view/auth/login.blade.php
が表示されます。
とはいっても、今の段階でプロジェクトをブラウザに表示しても、登録やログイン画面は出てきません。
フロントエンド部分は、いちから作成していかねばなりません。
③画面作成例
登録画面の作成のみ、ここで作成例を紹介しますね。
ファイルはresources/viewの中にauthディレクトリを作成し、その中にregister.blade.phpファイルを作ります。
各name属性は次のようにします。
- 名前:name
- メール:email
- パスワード:password
- パスワード再設定:password_confirmation
作成例としては、次のような感じです。
【resources/view/auth/register.blade.php】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@if ($errors->any()) <div> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form method="post" action="{{route('register')}}" class="form"> @csrf お名前:<input type="text" name="name"><br> メール:<input type="text" name="email"><br> パスワード:<input type="password" name="password"><br> パスワード再入力:<input type="password" name="password_confirmation"><br> <button type="submit">Register</button> </form> |
上記のビュー部分をブラウザに表示すると、次のようになります。
これで、データベースに登録もできます。
登録後は、/home 画面が表示されます。ただデフォルトではhome画面には何もないので、【404 not found】画面となります。
home画面は別途作成していってくださいね。
補足
■fortifyのコントローラはapp/Actions/Fortifyの中に入っています。たとえば登録の処理は、app/Actions/Fortify/CreateNewUser.phpのcreateメソッドに記述されています。
■各ルート設定は php artisan route:list コマンドで確認できます。
【forityルート設定一覧】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
+--------+----------+--------------------------------+---------------------------------+---------------------------------------------------------------------------------+---------------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+--------------------------------+---------------------------------+---------------------------------------------------------------------------------+---------------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api | | | | | | | auth:api | | | POST | forgot-password | password.email | Laravel\Fortify\Http\Controllers\PasswordResetLinkController@store | web | | | | | | | guest:web | | | GET|HEAD | forgot-password | password.request | Laravel\Fortify\Http\Controllers\PasswordResetLinkController@create | web | | | | | | | guest:web | | | POST | login | | Laravel\Fortify\Http\Controllers\AuthenticatedSessionController@store | web | | | | | | | guest:web | | | | | | | throttle:login | | | GET|HEAD | login | login | Laravel\Fortify\Http\Controllers\AuthenticatedSessionController@create | web | | | | | | | guest:web | | | POST | logout | logout | Laravel\Fortify\Http\Controllers\AuthenticatedSessionController@destroy | web | | | GET|HEAD | register | register | Laravel\Fortify\Http\Controllers\RegisteredUserController@create | web | | | | | | | guest:web | | | POST | register | | Laravel\Fortify\Http\Controllers\RegisteredUserController@store | web | | | | | | | guest:web | | | POST | reset-password | password.update | Laravel\Fortify\Http\Controllers\NewPasswordController@store | web | | | | | | | guest:web | | | GET|HEAD | reset-password/{token} | password.reset | Laravel\Fortify\Http\Controllers\NewPasswordController@create | web | | | | | | | guest:web | | | POST | two-factor-challenge | | Laravel\Fortify\Http\Controllers\TwoFactorAuthenticatedSessionController@store | web | | | | | | | guest:web | | | | | | | throttle:two-factor | | | GET|HEAD | two-factor-challenge | two-factor.login | Laravel\Fortify\Http\Controllers\TwoFactorAuthenticatedSessionController@create | web | | | | | | | guest:web | | | POST | user/confirm-password | | Laravel\Fortify\Http\Controllers\ConfirmablePasswordController@store | web | | | | | | | auth | | | GET|HEAD | user/confirm-password | password.confirm | Laravel\Fortify\Http\Controllers\ConfirmablePasswordController@show | web | | | | | | | auth | | | GET|HEAD | user/confirmed-password-status | password.confirmation | Laravel\Fortify\Http\Controllers\ConfirmedPasswordStatusController@show | web | | | | | | | auth | | | PUT | user/password | user-password.update | Laravel\Fortify\Http\Controllers\PasswordController@update | web | | | | | | | auth | | | PUT | user/profile-information | user-profile-information.update | Laravel\Fortify\Http\Controllers\ProfileInformationController@update | web | | | | | | | auth | | | POST | user/two-factor-authentication | two-factor.enable | Laravel\Fortify\Http\Controllers\TwoFactorAuthenticationController@store | web | | | | | | | auth | | | | | | | password.confirm | | | DELETE | user/two-factor-authentication | two-factor.disable | Laravel\Fortify\Http\Controllers\TwoFactorAuthenticationController@destroy | web | | | | | | | auth | | | | | | | password.confirm | | | GET|HEAD | user/two-factor-qr-code | two-factor.qr-code | Laravel\Fortify\Http\Controllers\TwoFactorQrCodeController@show | web | | | | | | | auth | | | | | | | password.confirm | | | GET|HEAD | user/two-factor-recovery-codes | two-factor.recovery-codes | Laravel\Fortify\Http\Controllers\RecoveryCodeController@index | web | | | | | | | auth | | | | | | | password.confirm | | | POST | user/two-factor-recovery-codes | | Laravel\Fortify\Http\Controllers\RecoveryCodeController@store | web | | | | | | | auth | | | | | | | password.confirm | +--------+----------+--------------------------------+---------------------------------+---------------------------------------------------------------------------------+---------------------+ |
登録のためのルート設定は、registerを使います。
さいごに
fortifyのインストール方法と初期設定を解説しました。フォームの作成をいちから全部行いたい場合には良い機能です。
ただそうでない場合は、フロントエンド(ビュー部分)をいちから作るのは大変なので、他のオプションをおすすめします。
Laravelの各認証機能の特徴・比較は下記にまとめてあるので、良かったら参考にしてくださいね。