📝
Laravel 8 × React でログイン機能を実装する
はじめに
Laravel 8とReactでログイン機能を実装してみます
実装には laravel/ui を使用します
環境
$ php -v
PHP 7.4.9 (cli) (built: Aug 8 2020 11:29:07) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.9, Copyright (c), by Zend Technologies
with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
$ composer -V
Composer version 1.10.20 2021-01-27 15:41:06
$ node -v
v14.7.0
$ npm -v
6.14.7
実装の流れ
1. Laravelプロジェクトを作成します
$ composer create-project laravel/laravel laravel-react --prefer-dist "8.x"
$ php artisan -V
Laravel Framework 8.32.1
2. laravel/ui をインストールします
- 自分の環境だと、composer requireにてメモリ不足となってしまいましたので、
COMPOSER_MEMORY_LIMIT=-1
をつけています。メモリ不足にならないようでしたら、不要です
$ cd laravel-react
$ COMPOSER_MEMORY_LIMIT=-1 composer require laravel/ui
3. Reactのログイン機能をインストールします
$ php artisan ui react --auth
4. npm installを行います
$ npm install
5. npm run devを行います
$ npm run dev
> @ dev /src/laravel-react
> npm run development
> @ development //src/laravel-react
> mix
Additional dependencies must be installed. This will only take a moment.
Running: npm install resolve-url-loader@^3.1.2 --save-dev --legacy-peer-deps
とメッセージが表示された場合は、以下のように resolve-url-loader@^3.1.2
をインストールし、その後、npm run dev
を行います
$ npm install resolve-url-loader@^3.1.2 --save-dev --legacy-peer-deps
$ npm run dev
6. データベースを作成します
- データベースには sqlite を使用します
$ touch database/database.sqlite
7. .envを修正します
-
DB_CONNECTION
にsqlite
を指定し、DB_DATABASE
の設定は削除します - MySQLなどのRDBを使用する場合は .env の設定を使用するRDBに合わせて変更してください
-DB_CONNECTION=mysql
+DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
-DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
-
MAIL_MAILER
にlog
を指定します
-MAIL_MAILER=smtp
+MAIL_MAILER=log
8. キャッシュをクリアします
$ php artisan cache:clear
Application cache cleared!
9. マイグレーションを実行します
- users と password_resets, failed_jobs が作成されます
$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (6.43ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (3.94ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (6.27ms)
10. ビルトインサーバーを起動します
$ $ php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
[Sat Mar 13 16:27:13 2021] PHP 7.4.9 Development Server (http://127.0.0.1:8000) started
11. サイトにアクセスします
-
http://127.0.0.1:8000
にアクセスするとLaravelの初期画面が表示されます
-
Laravelの初期画面の右上の Login ボタンをクリックするか、
http://127.0.0.1:8000/login
にアクセスすると、ログイン画面が表示されます
-
Register ボタンをクリックするか、
http://127.0.0.1:8000/register
にアクセスすると、ユーザー登録画面が表示されます
-
name, email, password を入力して、 Register ボタンをクリックすると、ログイン後の画面が表示されます
-
右上のプルダウンメニューを選択すると、 Logout ボタンがあるので、クリックすると、ログアウトされます
-
ログイン画面の
Forgot Your Password?
リンクをクリックするか、http://127.0.0.1:8000/password/reset
にアクセスすると、パスワードリセット画面が表示されます- メールアドレスを入力して、
Send Password Reset Link
をクリックすると、 メールが送信されますが、 7の設定にてstorage/logs/laravel.log
にメールを出力するようにしているので、laravel.log
にパスワードリセットのリンクが出力されます
- メールアドレスを入力して、
まとめ
Laravel 8 × React でログイン機能を実装してみました
微調整は必要ですが、 laravel/ui を使えば簡単にログイン機能が実装できるので、参考にしてみてください
ソースコードはこちらに格納しています
Discussion