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 によるユーザ認証

メールの設定

新規のユーザがユーザ登録を行ったときには,登録されたメールアドレスが正しいかどうかを検証する必要があります.ここでは,システムからメールを送信するための準備を行います.具体的には Gmail を利用してメールを送信するための設定を行います.

目次に戻る

Gmail のセキュリティ設定(2段階認証)

Gmail では標準でセキュリティの設定がされており,Laravel 等の外部システムからのメール送信を標準では拒否するようになっています.2022年5月までは設定次第で Gmail のパスワードを使った送信ができていました.しかし,この機能が2022年5月30日で利用できなくなりました.現在は Laravel 等の外部システムからメールを送信するためには次の手順に従って2段階認証を有効にし,さらにアプリパスワードを設定しなければなりません.なお,2段階認証を設定するためには有効な電話番号が必要で,1つの電話番号で認証可能な Google アカウントには上限(5個程度?)があるようです.一方で,Gmail 以外のメールを利用し,SMTP とパスワードでメールを送信できる環境であればここに進んでください

まず,Google にログインして,画面右上の「Google アカウント」アイコンをクリックし,「Google アカウントの管理」を開きます.さらに,「セキュリティ」のページを開くと「Google へのログイン」項目が表示されます.次の画面で「2段階認証プロセス」がオフになっているので,これをオンにする手続きを行います.

google-2-step-verification2022-01

次のような画面になるので,内容を確認し「使ってみる」を押下します.

google-2-step-verification2022-02

正しいパスワードを入力して「次へ」を押下します.

google-2-step-verification2022-03

再設定用の電話番号が設定されていたら,その電話番号が表示されます.自身のスマートフォンの正しい番号であることを確認します.さらに,コードの取得方法は「テキスト メッセージ」を選択して「次へ」をクリックします.

google-2-step-verification2022-04

スマートフォンの SMS に Google 確認コードが含まれたテキストメッセージが届きます.その確認コードを次の画面に入力します.

google-2-step-verification2022-05

2段階認証プロセスを有効にします.

google-2-step-verification2022-06

2段階認証プロセスが有効になった.これによって新たなブラウザやPCでGoogleにログインするときには,パスワードだけでなく,スマートフォンのSMSに届く確認コードも必要になる.

2段階認証プロセスが有効になりました.これによって新たなブラウザや PC で Google にログインするときには,パスワードだけでなく,スマートフォンの SMS に届く確認コードも必要になります.

google-2-step-verification2022-07

目次に戻る

Gmailのセキュリティ設定(アプリパスワード)

Google の2段階認証を設定できたので,Laravel 等の外部システムから Gmail でメールを送信するためにアプリパスワードを設定します.

Google にログインして,画面右上の「Google アカウント」アイコンをクリックし,「Google アカウントの管理」を開きます.さらに「セキュリティ」のページを開くと「Google へのログイン」の項目が表示されます.ここで「2段階認証プロセス」がオンになっており,アプリパスワードが「なし」になっていることを確認してからアプリパスワードを作成します.

google-2-step-verification2022-08

本人確認のためにパスワードの入力が求められます.

google-2-step-verification2022-09

アプリパスワードを作成します.まず「アプリを選択」で「メール」を選びます.

google-2-step-verification2022-10

「デバイスを選択」では「その他(名前を入力)」を選びます.

google-2-step-verification2022-11

適当な名前をつければ良いですが,ここでは「Vagrant」としておきます.その後「生成」ボタンを押下します.

google-2-step-verification2022-12

以上の作業で16文字のアプリパスワードが生成されました.これをメモ(コピー)し,「完了」をクリックします.

google-2-step-verification2022-13

次の画面でアプリパスワードが生成されたことが確認できます.

google-2-step-verification2022-14

目次に戻る

メールの設定

Laravel プロジェクトの設定ファイル .env にメールの設定を記載します.なお,接続のためのパスワードを平文で入力しなければならないので,このファイルの管理について十分に注意する必要があります.特に Git のリポジトリに含めないように注意してください.また,本番環境ではファイルの所有権およびグループに対するアクセス権の設定にも注意が必要です.(本番環境 Web サーバのアクセスログを確認すると .env などを指定した不正なアクセスが頻繁に来ていることがわかります.) Gmail の2段階認証を使う場合には,MAIL_PASSWORD= に上で設定したアプリパスワードを指定する(ログインパスワードではない)ことにも注意してください.

.env (抜粋)MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=xxxxxxxxxx@gmail.com
MAIL_FROM_NAME=laravelAuth
MAIL_USERNAME=xxxxxxxxxx@gmail.com
MAIL_PASSWORD=applicationpassword
MAIL_PRETEND=false

目次に戻る

メールの送信テスト

メール送信の設定ができたら,実際に Laravel からメールを送信できることを確認します.これには php artisan tinker を利用します.次のコマンドで正しいメールアドレスを指定して実行すると,メールの送信ができます.メールの送信に成功すると = Illuminate\Mail\SentMessage {#6364} というメッセージが表示されます.

vagrant@ubuntu2204 laravelAuth $ php artisan tinker ⏎
Psy Shell v0.11.22 (PHP 8.1.2-1ubuntu2.14 — cli) by Justin Hileman
> Mail::raw('Test Mail', function($message) { $message->to('yyyyyyyy@gmail.com')->subject('test'); }); ⏎
= Illuminate\Mail\SentMessage {#6364}

> exit ⏎

   INFO  Goodbye.

vagrant@ubuntu2204 laravelAuth $

メールを受信できているか自身のメール環境で確認してください.

目次に戻る