LaravelでGmail認証をする

確認環境:

Windows10、Laravel 7.30.4、PHP 7.2.33、MySQL 5.7.30、Gmail

多くのWebアプリケーションは、利用開始時にユーザーのメールアドレスを確認する必要がありますが、Laravelで、とても簡単にメール認証の機能が実装できます。

1) Loginページを作る

上記ページの手順でLoginページを作っておきます。

2) UserモデルにMustVerifyEmailインターフェースを追加する

app\User.php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;
    // ...
}

class User extends Authenticatable

の後ろに implements MustVerifyEmail
を追加する。

3)web.phpにルートパラメータを追加する

routes\web.php

Auth::routes(['verify' => true]);
  1. Loginページを作る でAuth::routes は自動で作られるので、引数に [‘verify’ => true] を追加する。

4) .envファイルにGmail用の設定をする。

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=任意のGmailアドレス
MAIL_PASSWORD=下記参照
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=任意のGmailアドレス(MAIL_USERNAMEと同じアドレス)
MAIL_FROM_NAME="${APP_NAME}"

自分のGoogleアカウントのセキュリティでアプリパスワードを取得します。

注意点は、2段階認証を選択しておくことです。

取得したアプリパスワードを.envファイルの「MAIL_PASSWORD」に設定します。

5) サイトにアクセスし、新規にユーザー登録する。

ユーザー登録した後、登録時に指定したメールアドレス(Gmail)を確認します。

以下の認証メールが届いていることを確認します。

Verify Email Address ボタンを押すと、認証処理が行われ

/home画面にリダイレクトします。

これだけで、メール認証機能が作れます。すごいシンプルです。

参考サイト

Laravel 7.x 認証

Laravel 7.x メール確認

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です