書籍「Laravelの教科書」Laravel13対応サポートガイド公開中 → ダウンロードはこちら

Laravel Fortifyのインストール方法・メリットとデメリット

Laravel認証機能

LaravelのFortifyを使えば、ユーザー登録・ログイン機能といった認証機能のバックエンド部分を手軽に搭載できます。メール認証や二段階認証といった高度な機能も使えます。

ただデメリットとしては、Fortifyはバックエンド部分しか提供してくれず、フロントエンド部分はすべて自分で行わなければいけません。

つまり、

「フロントエンドをすべていちから作りたい!」

という方には、fortifyはおすすめです。

インストール方法と初期設定の方法を解説していきますね。

Laravel Fortifyのインストール方法

①新規プロジェクトの作成

まずはLaravelで新規プロジェクトを作成し、データベースも準備します。

下記の記事を参考にしてください。

Junko
Junko

「初心者のためのLaravel入門:認証設定とBootstrap設定もしておこう」の前まで行ってくださいね。

②fortifyインストール

cdコマンドでLaravelをインストールしたプロジェクトに移動します。

下記コマンドを実行して、fortifyをインストールします。

composer require laravel/fortify

下記コマンドで関連ファイルを作成します。

php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"

③マイグレート

マイグレートを実行します。

php artisan migrate

これでインストール完了です。

次に設定を進めていきます。

Laravel Fortifyの設定

①config/app.php設定

app/config/app.phpファイルの177行目あたりに、下記を追加します。

App\Providers\FortifyServiceProvider::class,

【追加後のapp.php】

②登録とログイン画面設定

次に登録とログイン用画面の設定をしましょう。

app/Providers/FortifyServiceProvider.phpファイルを開きます。

public function boot() に、下記の2つの設定をします。

【FortifyServiceProvider.php】

    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

が表示されます。

とはいっても、今の段階でプロジェクトをブラウザに表示しても、登録やログイン画面は出てきません。

Junko
Junko

フロントエンド部分は、いちから作成していかねばなりません。

③画面作成例

登録画面の作成のみ、ここで作成例を紹介しますね。

ファイルはresources/viewの中にauthディレクトリを作成し、その中にregister.blade.phpファイルを作ります。

各name属性は次のようにします。

  • 名前:name
  • メール:email
  • パスワード:password
  • パスワード再設定:password_confirmation

作成例としては、次のような感じです。

【resources/view/auth/register.blade.php】

@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】画面となります。

Junko
Junko

home画面は別途作成していってくださいね。

補足

■fortifyのコントローラはapp/Actions/Fortifyの中に入っています。たとえば登録の処理は、app/Actions/Fortify/CreateNewUser.phpのcreateメソッドに記述されています。

■各ルート設定は php artisan route:list コマンドで確認できます。

【forityルート設定一覧】

+--------+----------+--------------------------------+---------------------------------+---------------------------------------------------------------------------------+---------------------+
| 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の各認証機能の特徴・比較は下記にまとめてあるので、良かったら参考にしてくださいね。

Laravel認証機能

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる
 

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新版Laravel13への対応に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel13に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した本を書きました。 書店やAmazon等のオンラインショップにて販売中
最新版Laravel13対応用サポートガイド(PDF)あり

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。
最新版Laravel13対応用
サポートガイド(PDF)あり

書籍の詳細を見てみる
シェアする
Twitter始めました。

コメント

タイトルとURLをコピーしました