Laravel5.8まではphp artisan make:auth
コマンドで認証機能を実装していましたが、Laravel6からはこのartisanコマンドが削除されました。
代わりの方法が実装されているので、Laravel6で認証機能を追加する手順を説明します。
公式サイトでは以下で説明されています。
認証 6.x Laravel
この記事の内容
laravel/ui Composerパッケージをインストールする
Laravelプロジェクト内で下記のコマンドを実行し、laravel/ui
パッケージをインストールします。
$ composer require laravel/ui
php artisan ui vue –authを実行して認証機能を追加する
Laravelプロジェクト内で下記のコマンドを実行し、認証機能を追加します。
$ php artisan ui vue --auth
これで画面の右上に「LOGIN」と「REGISTER」が追加されています。

このまま「LOGIN」のリンクをクリックするとログインフォームが表示されますが、jsとcssが読み込めずにレイアウトが崩れています。

npm install、npm run devを実行する
Vue.jsのビルドをしてログイン画面が正しく表示されるようにします。
下記のコマンドを実行します。
$ npm install
$ npm run dev
ログイン画面が綺麗に表示されました。

登録画面はこんな感じ。

データベース設定とマイグレーションをする
自分は開発環境にLaradockを使っているのですが、ユーザーの新規登録をしようとすると以下の用なエラーの画面になりました。

Database name seems incorrect
You're using the default database name laravel. This database does not exist.
Edit the .env file and use the correct database name in the DB_DATABASE key
データベースの設定をする必要があります。
いくつかやる事があるので順番に対応していきます。
Laravelの.envを修正する
LaradockのMySqlのデフォルト設定を確認し、それに合わせてLaravelの設定をします。
まずLaradockの.env
を確認すると以下のような感じになっています。
### MYSQL #################################################
MYSQL_VERSION=latest
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
上記を参考に、Laravelプロジェクトの.env
を編集して以下のようにします。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
Laradockのmysql/my.cnfを修正する
Laradockのmysqlの設定を追加します。
Laradockのmysql/my.cnfに以下の行を追加します。
default_authentication_plugin=mysql_native_password
mysqlコンテナを再ビルドする
Laradockのmysqlの設定を反映させるために、コンテナを再ビルドします。
コンテナを抜けて、ホストマシン側で下記のコマンドを実行します。
> docker-compose down
> docker-compose build --no-cache
> docker-compose up -d nginx mysql phpmyadmin workspace
マイグレーションを実行する
workspaceコンテナに入り、マイグレーションを実行します。
> docker-compose exec workspace /bin/bash
$ php artisan migrate
ユーザーの新規登録に整合しました。

Laravel6で認証機能を追加する手順は以上です。
コメント/ピンバック