0

我一直在尝试使用Laravel中的签名 URL向用户发送验证链接。它似乎可以正常工作,但是当使用 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

“本地主机”部分不应该在那里。但是,如果我在 URL 栏中手动删除它,我相信签名 URL 的东西我操纵了 URL 并给了我 401 错误。我在 localhost 环境中运行,但我使用 Laragon 的自动虚拟主机,以便我仍然可以使用域运行它。

有什么建议么?

4

2 回答 2

3

改变:

APP_URL=example.com

至:

APP_URL= http://example.com

我猜不指定“http://”会使其将 localhost 附加到前面。希望这对某人有帮助!

于 2019-01-04T03:52:23.610 回答
0

有时,如果您在虚拟环境或 docker 容器中工作,仅设置APP_URL将不起作用。尝试以下步骤。

.env第 1 步:在文件中设置您的域。(不要忘记双引号)

APP_URL="http://yourdomain.com"

第 2 步:在生成签名路由之前添加以下行

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

第 3 步:(可选)如果要强制https方案,请添加以下行

URL::forceScheme('https');
于 2020-05-22T17:29:00.760 回答