Генератор URL, помещающий "localhost" перед доменом в Laravel

Я пытался отправить по электронной почте пользователям ссылку для подтверждения, используя подписанные URL-адреса в Laravel. Кажется, все работает нормально, но ссылка получается неправильной, если она построена с использованием фасада URL.

public function toMail($notifiable)
{
    $url = URL::signedRoute('confirm', ['user' => $this->user->id]);

    return (new MailMessage)
                ->subject('Activate your email address')
                ->line('In order to use the application, please verify your email address.')
                ->action('Activate your account', $url)
                ->line('Thank you for using our application!');
}

В письме ссылка выглядит так:

http://localhost/mydomain.com/confirm/14?signature=3ba4d86827717440f70a3b2f60c913b6e84d550cb9fce8de04a8ba359833ac7c

Часть "localhost" не должна быть там. Однако, если я вручную удаляю его в строке URL-адреса, я считаю, что подписанный URL-адрес - это то, чем я манипулировал, и выдает ошибку 401. Я работаю в среде локального хоста, но я использую автоматический виртуальный хост Laragon, чтобы я мог запустить его с доменом.

Какие-либо предложения?

1 ответ

Иногда, если вы работаете в виртуальных средах или докер-контейнере, просто установите APP_URLне сработает. Попробуйте выполнить следующие действия.

Шаг 1. Установите свой домен в .envфайл. (Не забывайте двойные кавычки)

APP_URL="http://yourdomain.com"

Шаг 2: Добавьте следующую строку перед созданием подписанного маршрута

URL::forceRootUrl(\config('app.url'));

Шаг 3: (Необязательно) Добавьте следующую строку, если вы хотите принудительно https схема

URL::forceScheme('https');

Изменить:

APP_URL = example.com

Для того, чтобы:

APP_URL = http://example.com/

Я предполагаю, что отсутствие указания "http://" заставляет его добавлять localhost вперед. Надеюсь, это поможет кому-то!

Другие вопросы по тегам