2015-09-18 57 views
0

概述发送电子邮件:Laravel 5.1 - 内置密码重置功能无法与令牌

我创建使用内置在系统中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\[email protected]', ['token' => $token]); //DID NOT WORK 

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

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

回答

0

我找到了解决方案!这并不常见,但是如果添加一个反斜杠,它将保留正斜杠,并且它不会有令牌问题。

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

感谢&祝你好运!

+0

不相信这一点。当然,一个常量字符串不能以* backward *斜线结尾,因为它会避免结束语。那会导致解析错误。但是一个正斜杠?这应该没有任何问题。 – Jason

0

尝试这样

URL辅助函数的第二个参数是参数阵列与所述URL传递。而不是追加参数结束的URL ..,你可以使用像波纹管。

​​
+0

我也试过了:/ @Alupotha – dzerow

+1

什么是您的邮件驱动程序? mandrill? smtp? – Alupotha

+0

我使用PHP邮件,我找到了一个解决方案,这个问题是不寻常的,但我的方法工作!为您投票! :) 谢谢您的帮助! @Alupotha – dzerow