Laravel 5.8 でメール認証付きユーザ認証

Laravelでは認証機能(Auth)が標準で実装されているので簡単にWEBシステムに必要なユーザ認証ができます。
通常のユーザ認証は
①ユーザ登録で仮登録
②メールアドレスにメールが届き、リンクをクリックすることで本登録
とすることでメールアドレスの確認も行いますが、Laravel標準の認証機能では①の仮登録で本登録となります。
もちろんAuthには②まで行う通常の本登録のシステムも用意されていますので実装しましょう。

とかやってるうちにLaravel 6.0 では make:auth コマンドもフレームワークから分離され laravel/ui パッケージに移行されましたね。。。気になるところですがまたいずれ・・・

Laravel開発環境-Laradock

DockerでLaravel開発環境-Laradock

Laravel標準の認証機能(Auth)

デフォルトでusersテーブルとpassword_resetsテーブルのマイグレーションファイルが生成されているので

http://localhost

※ヘッダに「LOGIN」「REGISTER」メニューが出る。
トップ画面

LOGIN画面

REGISTER画面

※REGISTERで登録したらすぐにログインできちゃうので通常はメール認証が必要ね。

Authでメール認証

【MustVerifyEmailインターフェイス】

★app/User.phpにMustVerifyEmailインターフェイスを実装しましょう。

app/User.php

【Routesの設定】

routes/web.php

※メール認証無しで http://localhost/home にアクセスするとログイン画面に遷移することを確認。

【ビューの日本語化】

★メールアドレス入力後の画面を日本語にしましょう。

resources/views/auth/verify.blade.php

【メールの日本語化】

★/vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php のメール内容を日本語に書き換えましょう。
app/Notifications/VerifyEmailJapanese.php

★app/User.phpでsendEmailVerificationNotificationアクションをオーバーライドしましょう。

app/User.phpに追記

補足:メール送信エラー発生

★config/mail.phpに下記を追記することで回避できました。

補足:モデルをapp/Modelsディレクトリ以下に配置したい

【ディレクトリ作成&app/User.php移動】

【名前空間の修正】

app/Models/Users.php

app/Http/Controllers/Auth/RegisterController.php

config/auth.php

config/services.php

database/factories/UserFactory.php

【モデル作成】

補足:ログインユーザ情報の取得

シェアする

  • このエントリーをはてなブックマークに追加

フォローする