こんにちは、むんです
今回は、Laravelでログイン機能を実装してみたいと思います。
なんと、artisanコマンドで大体作ってくれるみたいです!
では初めて参りましょう。
目次
- ログイン機能を実装する
- 新規登録してみる
- ログインしてみる
- まとめ
前提
- Laravelがインストール済みであること
- mysqlがインストール済みであること
Laravelのインストール手順は以下の記事に書いています。
【超初心者】LaravelでまずHelloworld
環境
- OS: macOS
- Laravelバージョン: 6.2.5
- phpバージョン:7.4.18
ログイン機能を実装する
1. プロジェクトを作成
// 最新バージョンのLaravelでプロジェクトを作成します。
$ composer create-project "laravel/laravel=6.*" loginlaravel
// プロジェクトディレクトリ配下へ移動
$ cd loginlaravel
// サーバーを起動する
$ php artisan serve --host 0.0.0.0
Starting Laravel development server: http://0.0.0.0:8000
[Wed May 5 11:31:21 2021] PHP 7.4.18 Development Server (http://0.0.0.0:8000) started
2. artisanコマンドでログイン機能を追加する
laravel/uiライブラリをインストール
$ composer require laravel/ui 1.*
ログイン機能を追加します。
$ php artisan ui vue --auth
Vue scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.
Authentication scaffolding generated successfully.
「Please run "npm install && npm run dev" to compile your fresh scaffolding.」に従います。
$ npm install
$ npm run dev
再度サーバーを起動して、確認します。
$ php artisan serve --host 0.0.0.0
「LOGIN」ボタンと「REGISTER」ボタンが出来ていますね!
「LOGIN」ボタンを押下すると、ログイン画面に遷移します。
「REGISTER」ボタンを押下すると、ユーザーの新規登録画面へ遷移します。
3. マイグレーションする
続いて、マイグレーションでデータベースの設定をしていきます。
マイグレーションとは?
まず、マイグレーションファイルを作成します。
$ php artisan make:migration create_users_table
//php artisan make:migration {ファイル名}
create_users_table部分はマイグレーションファイル名になります。
後で見返しても分かり易いファイル名にして下さい。
そもそもmysqlに接続できるか確認してから進みましょう。
$ mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
接続失敗ですね。
これはmysql.sockがないことが原因で出るエラーです。
mysql.sockを作りましょう。
$ sudo touch /tmp/mysql.sock
mysqlを再起動します。
$ sudo mysql.server restart
ERROR! MySQL server PID file could not be found!
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/{Username}s-MacBook-Pro.local.pid).
PIDファイルが見つかりませんよ!というエラー。
作りましょう。
$ touch /usr/local/var/mysql/{Username}s-MacBook-Pro.local.pid
$ sudo mysql.server restart
Starting MySQL
...... SUCCESS!
接続成功です!
データベースの一覧を確認します。
$ mysql -u root -p
mysql> show databases;
恐らく、laravelというデータベースがないはずです。
それでは、作りましょう。
mysql> CREATE DATABASE laravel;
再度マイグレートを実行してみます。
$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.01 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.01 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.01 seconds)
成功です!
別のdatabaseを指定したい場合
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE={指定したいデータベース名に修正}
DB_USERNAME=root
DB_PASSWORD=
新規登録してみる
Registerボタンを押下すると、下記画面に遷移するはずです。
ユーザーの登録に成功しました!
ログインしてみる
一度ログアウトして、先ほど登録したユーザーでログインしてみます。
Loginボタンを押下し、下記画面に遷移しログインに成功するはずです。
ログインに成功しました!
mysqlでテーブルを確認してみましょう。
mysql> use laravel;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-------------------+
| Tables_in_laravel |
+-------------------+
| failed_jobs |
| migrations |
| password_resets |
| users |
+-------------------+
4 rows in set (0.00 sec)
mysql> select * from users;
+----+----------+--------------------------+-------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
| id | name | email | email_verified_at | password | remember_token | created_at | updated_at |
+----+----------+--------------------------+-------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
| 1 | testuser | {******}@gmail.com | NULL | {暗号化されたパスワード} | NULL | 2021-05-05 09:49:59 | 2021-05-05 09:49:59 |
+----+----------+--------------------------+-------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql>
## まとめ
いかがでしたでしょうか。
ログイン機能がこんなにサクッとできてしまうなんて、Laravelってすごいですね!
次回はログイン後の遷移先の実装をしてみたいと思います。