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 をインストールしてユーザ認証機能を追加しました.インストールだけで必要な機能がほぼ出来上がっているので,ここでは実際にその動作を確認します.

トップページにアクセスすると,これまでは存在しなかった「Log in」と「Register」のリンクが画面の右上に表示されました.

laravel10-2023-auth-01.png

「Log in」のリンクをクリックしてログインページを開きます.しかし,まだユーザ情報が一切登録されていないので,トップページに戻ってから,「Register」のページに移動します.

laravel10-2023-auth-02.png

ユーザ登録のページです.

laravel10-2023-auth-03.png

名前,メールアドレス,パスワード(同じものを2回)入力します.現時点ではメールの検証を行うことなくユーザ登録が可能ですので,メールアドレスはダミーのアドレスでも問題ありません.入力できたら「REGISTER」ボタンを押下します.

laravel10-2023-auth-04.png

ユーザ情報がデータベースに登録され,ログインまで完了しました.ダッシュボードのページが表示されるはずです.

laravel10-2023-auth-05.png

画面右上の「ユーザ名」をクリックすると,「Log Out」のリンクが表示されるのでログアウトします.

laravel10-2023-auth-06.png

今度は,上で登録したメールアドレスとパスワードを使ってログインできることを確認します.

laravel10-2023-auth-07.png

また,ログアウトした後,/dashboard の URI をブラウザに直接入力して接続します.

laravel10-2023-auth-08.png

ログアウト状態であることから /dashboard ページへのアクセスは拒否され,ログイン画面に転送されることも確認できるはずです.

laravel10-2023-auth-09.png

ユーザ登録の前後に SQLite データベースで users テーブル中身を確認すると,次のようになりました.パスワードには hogehoge を設定しましたが,パスワードが平文ではなくハッシュ化されて保存されていることにも注意してください.

vagrant@ubuntu2204 database $ sqlite3 database.sqlite ⏎
SQLite version 3.38.2 2022-03-26 13:51:10
Enter ".help" for usage hints.
sqlite> .tables ⏎
failed_jobs             password_reset_tokens   users
migrations              personal_access_tokens
sqlite> .schema users ⏎
CREATE TABLE IF NOT EXISTS "users" (
    "id" integer primary key autoincrement not null,
    "name" varchar not null,
    "email" varchar not null,
    "email_verified_at" datetime,
    "password" varchar not null,
    "remember_token" varchar,
    "created_at" datetime,
    "updated_at" datetime);
CREATE UNIQUE INDEX "users_email_unique" on "users" ("email");
sqlite> select * from users; ⏎    # ユーザ登録前
sqlite> select * from users; ⏎    # ユーザ登録後
1|Koichiro Rinsaka|rinsaka@sample.com||$2y$12$wPGFDuCmuSjXn/wJ47DwU.eXIwtxzG9aoEL1WLC1/aYBhghUwjnKa||2023-11-03 09:56:31|2023-11-03 09:56:31
sqlite> .exit ⏎
vagrant@ubuntu2204 database $

目次に戻る