Laravel 5.1 - 内置密码重置功能,不发送带令牌的电子邮件

时间:2015-09-18 14:38:05

标签: php email laravel url forgot-password

概览

我正在使用Laravel 5.1中的内置系统创建密码重置功能,我已完全遵循说明here的说明。

resources/views/emails/password.blade.php中的视图收到一个变量$token,其中包含密码重置令牌,以便将用户与密码重置请求相匹配。在视图中,我有以下代码,它应该创建用户设置新密码的页面的URL链接:

   Click here to reset your password: {{ url('password/reset/'.$token) }}

问题:

它根本不发送电子邮件。但我已经意识到,如果我删除最后一个尾部斜杠(见下文):

   Click here to reset your password: {{ url('password/reset'.$token) }}

我收到http://mywebsite.com/password/reset35df435dfgdfg...

之类的内容

结论:

每当password/reset/$token之间都有一个尾随斜杠时,就不会发送电子邮件。即使我手动输入网址。

为什么/之前的$token会影响正在发送的电子邮件?有什么想法吗?

擅自解决方案:

 url('password/reset', [$token]); //DID NOT WORK

 action('Auth\PasswordController@getEmail', ['token' => $token]);  //DID NOT WORK

 route('password/email', ['token' => $token]); //DID NOT WORK

 url('password/reset/'.$token); //DID NOT WORK

2 个答案:

答案 0 :(得分:0)

试试这个

url helper function第二个参数是用url传递的参数数组。而不是将参数附加到网址的末尾..,您可以像下面一样使用。

url('password/reset', [$token]);

答案 1 :(得分:0)

我找到了解决方案!这通常不常见,但是如果你添加一个向后的尾部斜杠,它将保留正斜杠,它不会有令牌问题。

url('password/reset\/', [$token]);

谢谢&祝你好运!