2
3

More than 3 years have passed since last update.

Laravel8.xでBreezeを利用したメール認証の実装で見落としていたこと

Posted at

目的

  • Laravel8.xにおいて,認証のスターターキットとしてBreezeを導入した。
  • メール認証機能を追加しようと思ったが,うまくいかなかった。
  • 試行錯誤してうまくいった方法と,その理由をこの記事に供養します。

前提

  • 以下のコードでBreezeをLaravelプロジェクトに導入していること.
  • 以下の環境です。MAMPでサーバーを立ち上げています。
ハードウェア OS
macbookAir2020(Intel) BigSur 11.3 Beta
項目 バージョン
PHP 7.4.2
Laravel 8.29.0
MySQL 5.7.26
MAMP -
console
$ curl -s https://laravel.build/example-app | bash
$ cd example-app
$ php artisan migrate
$ composer require laravel/breeze --dev
$ php artisan breeze:install
$ npm install
$ npm run dev 

方法

以下では,Breezeを用いてメール認証をする方法を記載します。

Userの変更

モデルUserに Illuminate\Contracts\Auth\MustVerifyEmail を追加する

app\Models\User.php
+ use Illuminate\Contracts\Auth\MustVerifyEmail;

- class User extends Authenticatable
{
   ...
}
+ class User extends Authenticatable implements MustVerifyEmail
{
   ...
}

ルーティングの変更

ここが他記事と異なる部分です。Laravel/uiを用いている場合は

routes/web.php
+ Auth::routes(["verify"=>true]);

とすればいいところなのですが,Breezeの場合は

routes/web.php
Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');

となります。というのも,Breezeの場合はLaravel/UIをインストールしていないためです。

参考文献

https://qiita.com/nekyo/items/03e50b4d0dd6f09287d6
https://dev.to/dendihandian/laravel-email-verification-3lfa

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3