You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何修改用户密码重置邮件中重置链接的Base URL

Laravel 自定义密码重置邮件Base URL实现方法

你可以根据自身业务场景选以下任意一种方案实现:

方案1:修改全局应用URL(适用全栈应用统一域名场景)

Laravel 内部所有通过url()、route()生成的链接,默认都会读取应用的根URL配置:

  1. 打开项目根目录的.env文件,修改APP_URL项为你需要的目标地址:
APP_URL=https://your-target-domain.com
  1. 执行命令清除配置缓存,让修改生效:
php artisan config:clear

注意:该修改会全站生效,所有后台、接口、其他邮件内的链接都会使用这个域名。如果你的后端服务、其他业务页面不部署在这个目标域名下(比如前端重置页单独托管、后端是接口服务),不要用这个方案,选下面的自定义方案。


方案2:重写密码重置通知(仅修改重置邮件链接,推荐前后端分离场景使用)

默认的密码重置邮件是User模型触发的内置通知,你可以通过重写通知方法,完全自定义链接和邮件内容,不影响全局配置:

  1. 执行命令生成自定义通知类:
php artisan make:notification CustomResetPassword
  1. 编辑app/Notifications/CustomResetPassword.php文件,让它继承框架内置的重置密码通知,重写邮件生成逻辑:
<?php

namespace App\Notifications;

use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Notifications\Messages\MailMessage;

class CustomResetPassword extends ResetPassword
{
    public function toMail($notifiable)
    {
        // 这里替换成你需要的独立域名重置页地址
        $resetBaseUrl = 'https://your-independent-reset-domain.com';
        // 拼接重置参数,token是框架生成的合法重置令牌,email是用户邮箱
        $fullResetUrl = $resetBaseUrl . '/reset-password?token=' . $this->token . '&email=' . urlencode($notifiable->email);

        return (new MailMessage)
            ->subject('账户密码重置')
            ->line('您收到此邮件是因为账户发起了密码重置申请。')
            ->action('点击重置密码', $fullResetUrl)
            ->line('重置链接有效期为60分钟,过期后需要重新申请。')
            ->line('如果您本人没有发起重置操作,忽略此邮件即可。');
    }
}
  1. 打开app/Models/User.php模型文件,重写发送重置通知的方法,替换成你刚写的自定义类:
<?php

namespace App\Models;

// 引入自定义通知类
use App\Notifications\CustomResetPassword;
use Illuminate\Foundation\Auth\User as Authenticatable;
// 其他原有use项保持不变

class User extends Authenticatable
{
    // 原有模型代码保持不变...

    /**
     * 重写框架默认的密码重置通知发送方法
     */
    public function sendPasswordResetNotification($token)
    {
        $this->notify(new CustomResetPassword($token));
    }
}

这个方案不会影响项目其他任何地方的链接生成,你还可以同时自定义邮件的文案、样式、附件等内容,适配大部分独立域名托管前端重置页的场景。

方案3:临时强制根URL(适合需要保留签名路由校验的场景)

如果你需要生成带签名校验的重置链接,又不想修改全局APP_URL,可以在生成重置链接前临时强制根域名:

use Illuminate\Support\Facades\URL;

// 生成链接前临时指定根域名,仅对当前请求生命周期内的链接生成生效
URL::forceRootUrl('https://your-target-domain.com');

你可以把这段逻辑放在自定义通知的链接生成前,也可以在AppServiceProvider的boot方法里加判断,仅在处理密码重置相关请求时生效。

内容的提问来源于stack exchange,提问作者PinoyStackOverflower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:21:47