Ikeda's Blog

Laravelに認証機能を導入(Laravel Fortify)

概要

とあるレンタルサーバに、Laravelで作ったWEBアプリをリリースしようとしたら、npmが使えない事態が発生。
Laravel Jetstreamを使っていたので、構築段階でコケる状態になってしまった。
代替手段として、Laravel Fortifyを使ったので、導入方法の備忘録。

コマンド実行

composer require laravel/fortify
php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"
php artisan migrate

config

config/app.phpに、以下を追加します。

App\Providers\FortifyServiceProvider::class,

登録、ログインページの定義

app/Providers/FortifyServiceProvider.phpを編集します。

<?php

// ... 省略 ...

class FortifyServiceProvider extends ServiceProvider
{
    // ... 省略 ...

    public function boot()
    {
        // ... 省略 ...

        // 登録ページは、resources/views/auth/register.blade.phpを表示する
        Fortify::registerView(function () {
            return view('auth.register');
        });

        // ログインページは、resources/views/auth/login.blade.phpを表示する
        Fortify::loginView(function () {
            return view('auth.login');
        });
    }
}

view

登録ページ

登録時に必要なのは、「名前(name)」「メールアドレス(email)」「パスワード(password)」「パスワード再入力(password_confirmation)」の4項目です。
それさえあれば良いので、以下だけでも動きます。

<form method="post" action="{{route('register')}}">
    @csrf
    name:<input type="text" name="name"><br />
    mail:<input type="text" name="email"><br />
    pass:<input type="password" name="password"><br />
    pass:<input type="password" name="password_confirmation"><br />
    <button type="submit">登録</button>
</form>

ログインページ

こちらは、「メールアドレス(email)」「パスワード(password)」があれば良いので、更にシンプル。

<form method="post" action="{{route('login')}}">
    @csrf
    mail:<input type="text" name="email"><br />
    pass:<input type="password" name="password"><br />
    <button type="submit">ログイン</button>
</form>

動作確認

http://(ドメイン)/registerから登録し、
http://(ドメイン)/loginからログインできるかを確認。

備考:ログイン後の遷移先を指定

app/Providers/RouteServiceProvider.phpにある、HOMEの値を変更すればOK。