0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【入門】 Laravelでログイン機能を実装する

Last updated at Posted at 2021-05-06

こんにちは、むんです:grinning:
今回は、Laravelでログイン機能を実装してみたいと思います。
なんと、artisanコマンドで大体作ってくれるみたいです!
では初めて参りましょう。

目次


  • ログイン機能を実装する
  • 新規登録してみる
  • ログインしてみる
  • まとめ

前提

  • Laravelがインストール済みであること
  • mysqlがインストール済みであること

Laravelのインストール手順は以下の記事に書いています。
:point_right_tone1:【超初心者】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

laravel_v6_welcom画面.png
無事、 welcome画面の表示ができました!

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

laravel_v6_welcom画面2.png
「LOGIN」ボタンと「REGISTER」ボタンが出来ていますね!

「LOGIN」ボタンを押下すると、ログイン画面に遷移します。
laravel_認証画面.png

「REGISTER」ボタンを押下すると、ユーザーの新規登録画面へ遷移します。
laravel_新規登録画面.png

3. マイグレーションする

続いて、マイグレーションでデータベースの設定をしていきます。

マイグレーションとは?
マイグレーション(migration)とは英語で「***移動・移行***」を意味します。 マイグレーションファイルというphpファイルにテーブル定義を書くことで、アプリケーションのソースコードと一緒に管理することが可能となります。 マイグレーションファイルを記述し終わった後で、Artisan migrateコマンドを実行すると、Laravelがその内容をもとに自動でデータベースを構成します。 その他にも、Laravelのマイグレーション機能にはシーダーやテスト用ダミーデータの自動生成など便利な機能がたくさんあるようですが、今回は割愛します。

まず、マイグレーションファイルを作成します。

$ 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! 

接続成功です!:tada:

データベースの一覧を確認します。

$ 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)

成功です!:smile::tada:

別のdatabaseを指定したい場合
デフォルトでは"laravel"というdatabaseでテーブルが作成されますが、別のdatabaseを指定したい場合は.envファイルを修正して下さい。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE={指定したいデータベース名に修正}
DB_USERNAME=root
DB_PASSWORD=
それではDBの設定が済んだので、ユーザーの登録、ログインができるはずです!

新規登録してみる

新規登録_1.png
Registerボタンを押下すると、下記画面に遷移するはずです。
新規登録_2.png
ユーザーの登録に成功しました!:tada:

ログインしてみる

一度ログアウトして、先ほど登録したユーザーでログインしてみます。
ログイン_1.png
Loginボタンを押下し、下記画面に遷移しログインに成功するはずです。

ログイン_2.png

ログインに成功しました!

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ってすごいですね!
次回はログイン後の遷移先の実装をしてみたいと思います。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?