Laravel6.x以降でログイン機能をインストールする方法

こんにちは❗フリーランス・コンサルタント&エンジニアの 九保すこひ です。

さてさて、ついに2019年9月3日にLaravel 6.0がリリースされましたので、早速試してみることにしました。

リリース情報によるといくつかの機能が追加になっていますので、今後いくつか紹介をしていきたいと考えています。ぜひご期待下さい😊✨

そして、今回6.0をインストールしていきなり上手くいかなかった点があったので簡単にその解決法を紹介しておきたいと思います。

それは何かと言うと・・・

ログイン機能

です。

バージョン5.8までは、Laravelをインストールするとphp artisan make:authというコマンドが使えるようになっていて、これを実行するだけでログイン機能を実装することができたのですが6.0からは、その手順が変更になりました。

ということで、今回はLaravel 6.0でログイン機能を実装する方法をご紹介したいと思います。

ぜひ皆さんのお役に立てると嬉しいです😊✨

【追記:2020.9.15】Laravel 8.xからはログイン機能はJetstreamというパッケージを使うようになりました。詳しくは、Laravel8.x以降でログイン機能をインストールする方法をご覧ください。

開発環境: Laravel 6.0

何が変わったのか

Laravel 6.0からはログイン機能は、laravel/uiという名前の別パッケージとして管理されるようになりました。そのため、まずはこのパッケージをインストールしましょう。

laravel/uiをインストールする

別パッケージといっても、もちろんcomposer一発でインストールができます。
以下のコマンドを実行してください。

【Laravel 7.xの場合】

composer require laravel/ui

【Laravel 6.xの場合】

composer require laravel/ui:^1.0 --dev

artisanコマンドを実行する

パッケージをインストールすると新しいartisanコマンドが使えるようになっていますのでお好みに合わせて以下のコマンドを実行してください。

Vueで実装する場合

php artisan ui vue --auth

Reactで実装する場合

php artisan ui react --auth

※ ちなみにこのコマンドを実行するとHomeControllerが自動的に作成されるので、それまでに作成している場合は気をつけておいてください。(上書きされます)

そして、この状態でマイグレーション・ファイルが作成されていますので以下のコマンドでDBにテーブルを作っておきましょう。

php artisan migrate

このコマンドを実行するとDBテーブルは以下のようになります。

npmパッケージをインストールしてビルドする

Vueなど必要なパッケージをnpmでインストールします。
以下のコマンドを実行してください。

npm install

続いてインストールしたパッケージをビルドします。

npm run dev

(もしくは、本番環境なら、こちら)

npm run production

この時点でログイン機能自体の実装は完了しています。
ブラウザでトップページを見てみましょう。

以下のように右上にLOGINREGISTERのリンクが表示されていれば成功です。

お疲れ様でした!

Seederでユーザーを作ってログインしてみる

せっかくここまでやってきたので、ここからは以前のLaravelと同じですが、Seederでテストユーザーを作ってログインしてみます。

まずは以下のコマンドでSeederファイルを作成します。

php artisan make:seeder UsersTableSeeder

すると、database/seeds/UsersTableSeeder.phpというファイルが作成されますので、中身を開いて以下のように変更してください。

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $names = [
            'taro' => '太郎',
            'jiro' => '次郎',
            'saburo' => '三郎',
            'shiro' => '四郎',
            'goro' => '五郎',
            'rokuro' => '六郎',
            'shichiro' => '七郎',
            'hachiro' => '八郎',
            'kuro' => '九郎'
        ];

        foreach ($names as $name_en => $name_jp) {

            \App\User::create([
                'name' => $name_jp,
                'email' => $name_en .'@example.com',
                'password' => bcrypt('xxxxxxxx')
            ]);

        }
    }
}

そして、Seederファイルを作成しただけではテストデータをDBに追加できませんので、同じフォルダ内にあるdatabase/seeds/DatabaseSeeder.phpというファイルを開いて以下のように変更してください。(実際にはコメントアウトを外して有効にするだけです)

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
         $this->call(UsersTableSeeder::class);
    }
}

では、この状態で以下のコマンドを実行してください。

php artisan db:seed

これで、テストユーザーの登録が完了しました。

後は、これまでと同じくログインページからメールアドレスとパスワードを入力してログインできるようになります。

なお、マイグレーションをはじめからやり直す場合にSeederも実行する場合は以下のコマンドが便利です。

php artisan migrate:fresh --seed

お疲れ様でした!

おわりに

今回のバージョンアップでログイン機能の実装方法が変わりましたが、これは「より必要な人だけ必要な作業をする」という流れになったのかなと感じています。

この当たりはBootstrapが以前ほどスタンダードではなくなってきている影響があるのかもしれません。

確かに、私もTailwind CSSとかもやってみたいですね。(とはいえ、よく利用させていただいてるAdminLTEとかがBootstrapなのでなかなか難しいでしょうけど・・・😂)

ということで、ぜひ皆さんもLaravel 6.0を試してみてくださいね。

ではでは〜!

開発のご依頼お待ちしております 😊✨
開発のご依頼はこちらから: お問い合わせ
どうぞよろしくお願いいたします!
このエントリーをはてなブックマークに追加       follow us in feedly  

開発効率を上げるための機材・まとめ