【问题标题】:Laravel Change Password Reset URLLaravel 更改密码重置 URL
【发布时间】:2020-05-07 10:51:26
【问题描述】:

我目前正在使用通过运行php artisan make:auth 提供的基本 Laravel 身份验证的项目,我在尝试使用重置密码功能时遇到问题。密码重置电子邮件发送得非常好,但单击电子邮件时生成的 URL 返回 404(复制电子邮件底部的 URL 时也会发生)。有没有办法将电子邮件中生成的 URL 修改为“工作 URL”,如下所示?点击密码重置电子邮件中的链接后,通过手动将浏览器中的“当前 URL”更改为“工作 URL”,已证明有效。

Current URL: [App Path]/[Email]/password/reset/[Token]
Working URL: [App Path]/[locale]/password/reset/[Token]?email=[Email]

该项目确实包含用于语言切换的信息,这就是为什么需要将[locale] 包含在 URL 中但在我的路由上运行以下内容,这适用于除密码重置 URL 之外的所有 blade.php 文件扩展名。

Route::group([
  'prefix' => '{locale}',
  'where' => ['locale' => '[a-zA-Z]{2}'],
  'middleware' => 'setlocale'], function() {
    Auth::routes();
});

任何有关此问题的建议或文档链接都会有所帮助,因为我自己找不到任何东西。

【问题讨论】:

  • 您是否正在寻找手动更改 URL 的方法?
  • 当你说手动时,你的意思是在代码中吗?因为我需要知道如何更改发送电子邮件时生成的 URL,我应该考虑为此制作中间件还是有办法将新参数传递到电子邮件模板中?
  • 是否有需要更改的php文件或者需要调整的密码重置电子邮件通知

标签: php laravel


【解决方案1】:

我通过创建一条新路由来捕获不正确的 URL 并使用正确的路径重定向它,从而部分解决了密码重置 URL 的问题:

Route::get('{email}/password/reset/{token}', function($email, $token){
    return redirect('/en/password/reset/'.$token.'?email='.$email);
});

但是,我仍然无法使用locale 代替/en/,当我尝试处理密码重置时,输入凭据时出现错误:This password reset token is invalid.,但这有最近生成的,任何建议都会有所帮助,我所做的研究似乎都使用了自定义密码重置控制器,在这种情况下对我没有帮助。

【讨论】:

  • 密码重置令牌被设置为无效是由于 BST 时区将令牌设置为无效。
猜你喜欢
  • 1970-01-01
  • 2017-03-05
  • 2019-01-12
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
相关资源
最近更新 更多