Laravel 10 入門トップページ


目次

  1. 全体の概要
  2. Laravel によるユーザ認証
    1. 概要
    2. プロジェクトの作成と初期設定
    3. メールの設定
    4. Laravel Breeze のインストール
    5. ユーザ登録機能の動作確認
    6. シーダによるテストユーザの登録
    7. テーブルにログイン ID の属性を追加
    8. ユーザ登録機能の修正
    9. ログイン ID でログインするように変更
    10. メールアドレスの検証
    11. シーダの修正
    12. 検証メールの有効期限と再送信
    13. セッション継続時間の確認と変更
    14. メールアドレスの変更
    15. パスワードの変更
    16. アカウントの削除
  3. ユーザ認証を備えたコメント掲示板の開発
  4. マルチ認証の実現

Laravel でユーザ認証とマルチ認証を実現する

Laravel によるユーザ認証

メールアドレスの変更

ここではユーザ登録後にメールアドレスを変更する機能の動作を確認します.Laravel Breeze をインストールすると,メールアドレスの変更機能もいい感じに出来上がっています.

まず,データベースのデータをリセットします.

vagrant@ubuntu2204 laravelAuth $ php artisan migrate:rollback; php artisan migrate; php artisan db:seed ⏎

   INFO  Rolling back migrations.

  2023_11_03_101930_add_login_id_to_users_table ............ 2ms DONE
  2019_12_14_000001_create_personal_access_tokens_table .... 7ms DONE
  2019_08_19_000000_create_failed_jobs_table ............... 5ms DONE
  2014_10_12_100000_create_password_reset_tokens_table ..... 5ms DONE
  2014_10_12_000000_create_users_table ..................... 6ms DONE


   INFO  Running migrations.

  2014_10_12_000000_create_users_table .................... 11ms DONE
  2014_10_12_100000_create_password_reset_tokens_table ..... 4ms DONE
  2019_08_19_000000_create_failed_jobs_table ............... 8ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ... 12ms DONE
  2023_11_03_101930_add_login_id_to_users_table ........... 14ms DONE


   INFO  Seeding database.

  Database\Seeders\UsersTableSeeder ......................... RUNNING
  Database\Seeders\UsersTableSeeder .................. 640.13 ms DONE

vagrant@ubuntu2204 laravelAuth $

次に,user_a のアカウントでログインします.

laravel10-2023-auth-38.png

右上のメニューから「Profile」のリンクを開きます.

laravel10-2023-auth-39.png

Profile のページからは名前とメールアドレスの変更ができます.ここではメールアドレスを「a@sample.com」から受信可能なアドレスに変更します.

laravel10-2023-auth-40.png

変更が完了すると「Your email address is unverified.」と表示されました.この時点で,users テーブルの email_verified_at が NULL に変更されています.つまり,一旦ログインできない状態になったので,「Click here to re-send the verification email.」のリンクをクリックして,メールを受信します.

laravel10-2023-auth-41.png

受信したメールのリンクをクリックして検証を完了します.

laravel10-2023-auth-42.png

検証が完了すると /dashboard ページにリダイレクトされます.

laravel10-2023-auth-43.png

以上の作業途中で随時データベースの中身を確認したところ次のような結果になりました.

sqlite> select * from users; ⏎ # 変更前
id|name|email|email_verified_at|password|remember_token|created_at|updated_at|login_id|student_id
1|A. Sample|a@sample.com|2023-11-03 00:05:00|$2y$12$1o9lB/bK29D/ctQ31oqR4OWPbuwMfYFREeE1C3mMqoeZisWnlImF6||2023-11-03 00:01:01|2023-11-03 00:01:01|user_a|6300997
2|B. Sample|b@sample.com|2023-11-03 00:06:00|$2y$12$FDhbZGy0w7vLtbODkmhhuu/oOKmGzfxOx/.nuM6LHK6QWlFWfTgCO||2023-11-03 00:02:01|2023-11-03 00:02:01|user_b|6300998
3|C. Sample|c@sample.com|2023-11-03 00:07:00|$2y$12$RjPnebCTS6jUax8s7cE5ve2126fKorZ8XFIRxuo3dMGn7ilP1ahBu||2023-11-03 00:03:01|2023-11-03 00:03:01|user_c|6300999
sqlite> select * from users; ⏎ # email 変更後
id|name|email|email_verified_at|password|remember_token|created_at|updated_at|login_id|student_id
1|A. Sample|xxxxxxx@xx.xxxxxxxxxx.ac.jp||$2y$12$1o9lB/bK29D/ctQ31oqR4OWPbuwMfYFREeE1C3mMqoeZisWnlImF6||2023-11-03 00:01:01|2023-11-04 16:23:45|user_a|6300997
2|B. Sample|b@sample.com|2023-11-03 00:06:00|$2y$12$FDhbZGy0w7vLtbODkmhhuu/oOKmGzfxOx/.nuM6LHK6QWlFWfTgCO||2023-11-03 00:02:01|2023-11-03 00:02:01|user_b|6300998
3|C. Sample|c@sample.com|2023-11-03 00:07:00|$2y$12$RjPnebCTS6jUax8s7cE5ve2126fKorZ8XFIRxuo3dMGn7ilP1ahBu||2023-11-03 00:03:01|2023-11-03 00:03:01|user_c|6300999
sqlite> select * from users; ⏎ # メール検証後
id|name|email|email_verified_at|password|remember_token|created_at|updated_at|login_id|student_id
1|A. Sample|xxxxxxx@xx.xxxxxxxxxx.ac.jp|2023-11-04 16:25:45|$2y$12$1o9lB/bK29D/ctQ31oqR4OWPbuwMfYFREeE1C3mMqoeZisWnlImF6||2023-11-03 00:01:01|2023-11-04 16:25:45|user_a|6300997
2|B. Sample|b@sample.com|2023-11-03 00:06:00|$2y$12$FDhbZGy0w7vLtbODkmhhuu/oOKmGzfxOx/.nuM6LHK6QWlFWfTgCO||2023-11-03 00:02:01|2023-11-03 00:02:01|user_b|6300998
3|C. Sample|c@sample.com|2023-11-03 00:07:00|$2y$12$RjPnebCTS6jUax8s7cE5ve2126fKorZ8XFIRxuo3dMGn7ilP1ahBu||2023-11-03 00:03:01|2023-11-03 00:03:01|user_c|6300999
sqlite>

目次に戻る