繁体   English   中英

Laravel 通知不响应 APP_URL 更改

[英]Laravel Notifications not responding to APP_URL changes

我正在测试我的密码重置通知,看看它是否响应 APP_URL 中的更改,不幸的是它没有。 尽管如此,它仍会响应 APP_NAME 环境变量中的更改。 我清除了缓存,清除了视图,运行了 php artisan optimize:clear 不幸的是没有任何效果。

很奇怪的是,它响应 APP_NAME 中的更改而不是 APP_URL ...

这是我的 env 文件

APP_NAME=WP
APP_ENV=local
APP_KEY=base64:uqkPjWhwt7orbinLRlRN+BNn6BxbdIRHSV4dG4dw5S0=
APP_DEBUG=true
APP_URL=http://example.com

这是未更改的 ResetPassword toMail() 函数

    public function toMail($notifiable)
{
    if (static::$toMailCallback) {
        return call_user_func(static::$toMailCallback, $notifiable, $this->token);
    }

    if (static::$createUrlCallback) {
        $url = call_user_func(static::$createUrlCallback, $notifiable, $this->token);
    } else {
        $url = url(route('password.reset', [
            'token' => $this->token,
            'email' => $notifiable->getEmailForPasswordReset(),
        ], false));
    }

    //dd(env('APP_URL')); returns http://example.com
    // dd(config('app.url')); returns http://example.com
    // dd($url); returns http://127.0.0.1:8000/{token}?email!




    return (new MailMessage)
        ->subject(Lang::get('Reset Password Notification'))
        ->line(Lang::get('You are receiving this email because we received a password reset request for your account.'))
        ->action(Lang::get('Reset Password'), $url)
        ->line(Lang::get('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.'.config('auth.defaults.passwords').'.expire')]))
        ->line(Lang::get('If you did not request a password reset, no further action is required.'));
}

排队通知将在构建 url 时使用 APP_URL 配置值。 但是,非排队通知在构建 url 时将使用 HTTP 请求信息。

ResetPassword通知不是排队通知,因此它将使用来自触发通知的原始 HTTP 请求的 url。 在这种情况下,您似乎在http://127.0.0.1:8000进行本地测试,因此这是用于构建密码重置链接的基本 URL。

如果通知已排队,则将使用运行控制台内核的队列工作器发送通知。 控制台内核构建一个假请求,它根据 APP_URL 配置值设置基本 url。


请注意,有一段时间,ResetPassword 通知专门使用通知中的config('app.url')来构建 URL。 这是在 5.4.22 中引入的,但后来在 6.18.7 中删除。 从那以后,它的行为就像其他所有通知一样。

在更改 .env 文件后,您可能需要运行php artisan cache:clearphp artisan config:clear

https://laravel.com/docs/6.x/configuration#configuration-caching

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM