Laravel:ResetPassword::createUrlUsing在AppServiceProvider的boot方法中不生效
Laravel密码重置URL修改未生效的解决方法
问题
尝试修改Laravel的密码重置URL,按照官方文档所述在AppServiceProvider的boot方法中添加了自定义代码,但邮件中的URL仍未改变,需要排查哪些操作?
用户添加的代码:
/** * Bootstrap any application services. * * @return void */ public function boot() { ResetPassword::createUrlUsing(function (User $user, string $token) { return config('app.frontend_url').'auth/reset-password?token='.$token.'&email='.$user->email; }); }
排查步骤
- 检查命名空间:确认
AppServiceProvider顶部已引入ResetPassword类,代码为use Illuminate\Auth\Notifications\ResetPassword;,未引入的话自定义逻辑不会执行。 - 验证配置项:检查
.env文件是否配置了FRONTEND_URL(如FRONTEND_URL=https://你的前端域名.com/),同时执行php artisan config:clear清除配置缓存,确保config('app.frontend_url')能正确读取值。 - 清除路由缓存:执行
php artisan route:clear,避免旧路由逻辑被缓存导致新配置不生效。 - 检查自定义通知类:如果项目中
User模型重写了sendPasswordResetNotification方法,使用了自定义的密码重置通知类,那么需要在该自定义类中设置URL生成逻辑,而非仅在AppServiceProvider中配置。比如自定义通知类需继承ResetPassword,并在类中调用createUrlUsing,或者直接在toMail方法中构造URL。 - 清除应用缓存:执行
php artisan cache:clear和php artisan view:clear,确保缓存的应用数据和视图被更新。 - 使用新重置链接测试:测试时务必重新请求密码重置邮件,旧的重置链接是之前生成的,不会受新配置影响。
内容的提问来源于stack exchange,提问作者Hamid Hosseini
相关产品推荐
相关产品推荐

