Laravel パスワードリセットメールのリンクをクリックするとObject not found!と表示される

ローカル環境(XAMPP)でLaravelアプリを製作中の話。

Laravelアプリに認証機能を付けてパスワードリセットを試しに使ってみたところ、以下の通りGメールを利用してメールを送信することはできた。

LaravelでGメールを送信する方法。アプリパスワードを取得すればOK。LaravelでGメールを送信する方法。アプリパスワードを取得すればOK。

しかし、届いたメール内のリンクをクリックすると”Object not found!”と表示されてパスワードリセットの手続きを進めることができなくなった。

Laravel パスワードリセットのURLをクリックするとObject not found!と表示される

よくよく調べてみると、本来URLは”localhost:8000/…”のようにポート番号を含めた形でなければいけないのに”localhost/…”のようにポート番号なしとなっていた。

Laravel パスワードリセットのURLからポート番号が抜けている

手打ちでポート番号を足して”localhost:8000/…”にするとパスワードリセットのページがきちんと表示されたので、ページ自体は存在していることを確認できる。

解決方法は.envのAPP_URLにポート番号を足すだけ。

.env

なぜこれで解決するかというと、パスワードリセットメールのリンクのURLを作る際に.envのAPP_URLを使っているから。

vender/laravel/framework/src/Illuminate/Auth/NotificationsResetPassword.php

これでパスワードリセットのメール内のURLも”localhost:8000/…”となり、クリックしたときにパスワードリセットのページが表示されるようになった。

Laravel APP_URLにポート番号を足すとパスワードリセットのURLにもポート番号が付いてアクセスできるようになった

コメントを残す

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